[vc_row el_class=”blog-info”][vc_column][vc_single_image source=”featured_image” img_size=”full” style=”vc_box_rounded”][vc_empty_space height=”40px”][vc_row_inner][vc_column_inner width=”1/6″][/vc_column_inner][vc_column_inner width=”2/3″][vc_column_text el_class=”font-weight-bold”]
Tipos estrictos en PHP
[/vc_column_text][vc_empty_space height=”40px”][/vc_column_inner][vc_column_inner width=”1/6″][/vc_column_inner][/vc_row_inner][vc_row_inner][vc_column_inner width=”1/6″][/vc_column_inner][vc_column_inner width=”2/3″][vc_column_text]
declare(strict_types=1);
En diciembre de 2015, PHP 7 introdujo declaraciones de tipos escalares y con ellas el indicador de tipos estrictos en PHP.
Para habilitar el modo estricto, se debe colocar una única directiva declare en la parte superior del archivo. Esto significa que la rigurosidad de la escritura para escalares se configura por archivo. Esta directiva no solo afecta las declaraciones de tipo de los parámetros, sino también el tipo de retorno de una función.
Lo bueno de declarar un archivo PHP como estricto es que en realidad se aplica SOLO al archivo actual. Garantiza que este archivo tenga tipos estrictos, pero no se aplica a ningún otro archivo en todo el proyecto. Le permite hacer, paso a paso, esta migración de código no estricto a código estricto, especialmente para nuevos archivos o proyectos.
Los tipos estrictos en PHP afectan los tipos de coerción
El uso de tipos de sugerencias sin strict_types puede provocar errores sutiles.
Antes de los tipos estrictos en PHP, int $x significaba que $x must have a value coercible to an int. Cualquier valor que pudiera ser forzado a un int pasaría el tipo de sugerencia, que incluye:
- un
intadecuado (ejemplo: 42 -> 42) - un
float(ejemplo: 13.1459 -> 13) - un
bool(ejemplo:true-> 1) - un
null(ejemplo:null-> 0) - una
stringcon dígitos iniciales (ejemplo: “15 árboles” -> 15)
Al establecer strict_types=1, le dice al motor que int $x significa que $x must only be an int proper, no type coercion allowed. Tiene la gran seguridad de que está recibiendo exactamente y solo lo que se le dio, sin ninguna conversión o pérdida potencial.
¿A quién debería importarle esta línea de “tipo estricto”?
En realidad, declare(strict_types=1); es más para el lector que para el escritor. ¿Por qué? Porque le dirá explícitamente al lector:
- Los tipos en este ámbito actual (archivo / clase) se tratan estrictamente.
'strict_types=1' es más para el lector que para el escritor
El escritor solo necesita mantener tal rigor al escribir el comportamiento esperado. Dicho esto, como escritor, debes preocuparte por tus lectores, lo que también incluye tu yo futuro. Porque vas a ser uno de ellos.
Referencias
[/vc_column_text][/vc_column_inner][vc_column_inner width=”1/6″][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row][vc_row el_class=”social-info”][vc_column width=”1/6″][/vc_column][vc_column width=”2/3″][vc_row_inner][vc_column_inner width=”1/2″][vc_column_text][social_share_button themes=’theme1′][/vc_column_text][/vc_column_inner][vc_column_inner el_class=”youtube-inner-col” width=”1/2″][vc_column_text][likebtn theme=”youtube” lang=”auto” show_like_label=”0″ white_label=”1″ alignment=”right”][/vc_column_text][/vc_column_inner][/vc_row_inner][vc_row_inner el_class=”social-info-inner”][vc_column_inner width=”1/4″][vc_single_image image=”921″][/vc_column_inner][vc_column_inner width=”3/4″][vc_column_text]
Diego Pacheco
Ingeniero en Sitemas, MBA (Babson College). Desarrollador PHP/Java/JavaScript. Fundador & CEO de EpicStudio. Entusiasta de las tecnologías web (JavaScript, Vue, Laravel, AWS, Docker) Viajes, Negocios, Surf y Growth.[/vc_column_text][asvc_list_item icon_fontawesome=”fa fa-calendar-o” icon_size=”14px”]Programar una reunión[/asvc_list_item][/vc_column_inner][/vc_row_inner][/vc_column][vc_column width=”1/6″][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]
Recent Post
[/vc_column_text][lvca_posts_carousel posts_query=”size:3|order_by:rand|post_type:post” image_linkable=”true” image_size=”full” taxonomy_chosen=”post_tag” display_title=”true” display_post_date=”true” display_summary=”true” autoplay_speed=”3000″ animation_speed=”300″ display_columns=”3″ scroll_columns=”3″ gutter=”3″ tablet_display_columns=”2″ tablet_scroll_columns=”2″ tablet_gutter=”3″ tablet_width=”800″ mobile_display_columns=”1″ mobile_scroll_columns=”1″ mobile_gutter=”3″ mobile_width=”480″][vc_empty_space height=”20px”][/vc_column][/vc_row]
