En PHP, las condiciones son el núcleo de las instrucciones condicionales, como las instrucciones, y ciertas otras estructuras de control, como los bucles while (). Las sorpresas son excelentes en algunas áreas de la vida, pero rara vez en el desarrollo de PHP, y saber cómo escribir declaraciones condicionales claras reducirá drásticamente las sorpresas en su código. Todo está limitado a escribir condiciones limpias y precisas. Este artículo define las condiciones de PHP y luego ofrece tres consejos prácticos sobre cómo escribir mejores condiciones para un código más predecible y menos propenso.
Qué condiciones hay en PHP hemos introducido PHP mientras que los bucles e instrucciones condicionales, como las declaraciones y si … de lo contrario, en nuestra introducción en el flujo de control de PHP. Estas estructuras dictan “qué código se ejecuta, cuando” en PHP y tiene algo en común:
// if-satement if ( # condición #): // Action endif; // if … elseif … else Declaración if ( # condición #): // Action Elseif ( # condición #): // Action Else: // Action Endif; // while () bucle while ( # condición #): // Action endif; Lo que estas estructuras tienen en común son las condiciones: declaraciones que evalúan verdaderas o falsas, dictando así lo que está sucediendo en otro código. Estas condiciones ocupan el # condición # del código anterior (que ciertamente no es un código real, por lo que no lo ejecute en vivo en el mainframe de la NASA). ¿Y sabías que puedes escribir las condiciones en la naturaleza, fuera del soporte? Es menos común pero es PHP perfectamente válido:
// ¡Aparece una condición salvaje! $ boolean = 2 === 3; // Esto se evalúa en falso, por lo que el valor de $ boolean es ahora que nos permite usar nuestras estructuras de control de una manera más pronunciada, si queremos: $ first_boolean = 2 === 3; // Esto se evalúa en falso, por lo que el valor de $ First_Boolean ahora es falso si ($ First_Boolean === para): echo ‘No ejecutaré’; // Eso es cierto, no se endif; $ Second_Boolean = 1 === 1; // Esto se evalúa como verdadero, al valor de $ Second_oloean ahora es si ($ Second_Boolean === True): echo ‘I Will Ejecutar’; // Imprime “I Will Ejecutar” en la página Endif; Cuando decimos “condiciones de PHP” en este artículo, estamos hablando de estas declaraciones 1 === 1 o 2 === 3 (o typeof ($ var) === ‘matriz’ o cualquier otra cosa): instrucciones que tienen un Valor de la verdad definida y eso ayuda a otro código a decidir si se ejecuta. Aquí, “escribir buenas condiciones” es, en esencia, lo mismo que “escribir buenas declaraciones condicionales” o incluso “escribir buenas declaraciones si -“, razón por la cual nosotros , en este artículo y personas reales, tienden a usar estos términos lo suficientemente cerca. . ¿Por qué tenemos que preocuparnos por cómo escribimos las instrucciones condicionales de PHP PHP es un lenguaje de escritura vago? Puede darme una variable, $ lima, que podría ser de cualquier tipo de datos. Podría ser un entero, o un booleano, un flotador, o incluso una gran matriz asociativa. Y luego puedo decir: “Oh, ahora $ var = ‘hola’; “Y de repente el tipo de datos de $ Var cambia instantáneamente en una cadena, sin que yo piense en ello.
¿Guay, verdad? Una especie de. La escritura gratuita hace que la escritura de PHP sea más fácil y menos pronunciada, pero también le brinda mucha libertad para confundirlo. Es una forma como un automóvil más antiguo que no se rasca cuando no usa el cinturón de seguridad. Esto te da mayor libertad en una forma. ¿Pero la libertad de hacer qué? ¿No uses el cinturón de seguridad? La solución es asegurarse siempre de permanecer solo con las hebillas. En PHP, esto significa escribir código que elimina la confusión de tipificación variable y otras posibles fuentes de confusión. Esa confusión a menudo parece la más dañina en las condiciones de PHP que son el motor de sus instrucciones IF, y otras instrucciones condicionadas, mientras que así. ¿Por qué es tal problema en ese entorno? Porque el propósito de las condiciones es que son claros: devuelven verdadero o falso, perfecto opuesto. Confundir cuál es la condición y tener problemas. El resto de este artículo son consejos prácticos sobre cómo lograr este objetivo de escribir condiciones de PHP Clare que siempre devuelvan lo que deben hacer. Cómo escribir Condiciones de PHP Consejos de ENTANX a continuación aprende las mismas lecciones generales:
Se específico. Escriba las condiciones que prueben exactamente, no aproximadamente, lo que espera que sea el caso.
No asume. No crea que comprenda exactamente la declaración de que su condición prueba: usted sabe que lo es.
Tenga en cuenta estas lecciones mientras observamos ejemplos de código. 1. Sea verbal Escriba completamente lo que intenta probar en sus condiciones de PHP. No cortes las esquinas.
Ejemplo con un mal condicional Si queremos hacer algo a una variable, debemos asegurarnos de que la variable exista, ¿verdad? Entonces, creo que podemos usar una declaración IF, para asegurarnos de que no hablemos nada. $ dada_me_a_number = 2; // Hagamos si obtuvimos algo para $ ded_me_a_number ($ ded_me_a_number): $ new_number = $ ded_me_a_number + 2; Echo ‘gracias por el número. Más 2 es ‘. $ New_number. ‘.’; Terminara si; El código anterior se ejecutará e imprimirá “Gracias por el número. Más 2 es 4. ” Pero es extremadamente frágil. Veamos por qué: $ ded_me_a_number = 0; if ($ ded_me_a_number): $ new_number = $ ded_me_a_number + 2; Echo ‘gracias por el número. Más 2 es ‘. $ New_number. ‘.’; Terminara si; El código anterior no imprimirá nada. ¿Por qué no? Porque 0 es muy similar, en la mente PHP, con falso. Él cree que los números superiores a 0 son “verdaderos”, por lo que publicó el primer ejemplo. En este caso, sin embargo, 0 es “falso” y la declaración ECHO ni siquiera se ejecuta. Una vez más, esto no se debe al hecho de que $ ded_me_a_number no está definido o no existe. Existe, es un int con valor 0, pero lo que sucede con el número 0 en una condición de PHP es que PHP lo mira y dice: “Es falso”. Este no es el comportamiento que queremos: nuestra pequeña oración debería agregar 2 a todos los números, no “todos los números, aparte de 0″.
¿Que hice mal? Fuimos demasiado concisos, no lo suficientemente prolistas, y esto nos hizo violar ambas reglas mencionadas anteriormente. Ni siquiera entraré en todas las otras formas en que podría romper esta declaración, como: $ ded_me_a_number = new stdclass; if ($ ded_me_a_number): $ new_number = $ ded_me_a_number + 2; Echo ‘gracias por el número. Más 2 es ‘. $ New_number. ‘.’; // Tiempo de error fatal! Terminara si; Entonces la condición PHP anterior es mala. ¿Cómo podemos hacerlo mejor? Ejemplo con un condicional bien escrito para dar un paso atrás: ¿Qué pedimos realmente en nuestra declaración IF? Lo que realmente queremos es asegurarse de que:
$ dada_me_a_number está definido y:
$ ded_me_a_number es en realidad un número.
El segundo bit es importante. Si no es un número, ¿por qué intentamos agregarle 2? Así es como preguntamos esto en php: if (isset ($ ded_me_a_number) && is_numeric ($ ded_me_a_number): $ new_number = $ ded_me_a_number + 2; Echo ‘gracias por el número. Más 2 es ‘. $ New_number. ‘.’; Terminara si; Esto si -ntatement pregunta exactamente las dos cosas que queremos saber: Primero, que $ ded_me_a_number está definido y no -first; Y, en segundo lugar, que $ ded_me_a_number es numérico.
Con este conocimiento, independientemente de lo que arrojemos en nuestra condición PHP (números, cadenas, nulos, objetos, matrices) siempre se ejecutará exactamente como se pretendía. Si puede agregar significativamente 2 a algo, el código interno se ejecutará, y si no puede, no lo será. Hicimos esto con la magia de ser prolista: afirmar todo lo que nos referimos, cosa con el trabajo, en lugar de confiar en suposiciones sobre una cosa que involucra a otra. En otras palabras, siempre funciona para exponerlo clara y completamente todas sus expectativas, no solo algunas de ellas, mientras escribe. 2. Verifique los datos primero porque PHP se escribe vagamente, sus condiciones de PHP deben ser particularmente claras sobre los tipos de datos con los que espera trabajar. Si no escribe de esa manera, pueden suceder cosas malas. Aquí hay un ejemplo. Ejemplo con un condicional mal escrito Si queremos combinar dos matriz, debemos asegurarnos de que la segunda matriz tenga cosas o no vale la pena agregarla. Podemos averiguar cuántos elementos tiene una matriz usando count (), por lo que creo que podemos escribir esto en nuestra instrucción IF. $ shopping_list = array (‘naranja’, ‘plátano’); $ New_list = Array (‘Strawberries’); // solo haremos $ new_list tiene elementos antes de intentar combinarlo en if ($ new_list): $ shopping_list = array_merge ($ shoping_list, $ new_list); Terminara si; // ¡Genial, ahora estamos listos para imprimir nuestra lista de compras! Foreach ($ shoping_list como $ list_item): echo $ list_item. ”; EndForeach;
El código anterior imprimirá “naranjas, plátanos, fresas”, por lo que funciona, ¿verdad? No realmente. Se basa demasiado en los supuestos, especialmente en los tipos de datos, y por lo tanto es extremadamente frágil: $ shoping_list = array (‘naranja’, ‘plátanos’); // $ new_list es una cadena vacía, que es una buena forma de indicar una cosa “vacía” … ¿verdad? $ new_list = ”; // solo haremos $ new_list tiene elementos antes de intentar combinarlo en if ($ new_list): $ shopping_list = array_merge ($ shoping_list, $ new_list); // malas noticias: este código ejecutará endif; // Así que ahora estamos listos para imprimir nuestra lista de compras ($ shoping_list como $ list_item): echo $ list_item; EndForeach; // no espere nada impreso a la página // espera, ¿qué pasó? var_dump ($ shoping_list); // esta impresión nula // uh oh, ¿qué pasó aquí? Por lo que debe haber parecido bien fundado en ese momento, cuente (”); En PHP devuelve 1, no 0 o un error. Nuestra instrucción IF se ejecutará, y dentro de ella probaremos el trabajo de Array_Merge () de dos cosas que no son ambas matrices. Entonces, ¿qué sucede cuando array_merge () una matriz con una cadena? nulo. En otras palabras, terminé destruyendo la matriz original con la que estábamos tratando de fusionarnos. Ejemplo con un condicional bien escrito es un mejor código: $ shoping_list = array (‘naranja’, ‘plátanos’); $ new_list = ”; // Vamos locos // ¿Hemos actuado una matriz con más de 0 elementos? If (is_array ($ new_list) && count ($ new_list)> 0): $ shoping_list = array_merge ($ shoping_list, $ new_list); Terminara si; // Genial, ahora nosotros ‘
¡Readye para imprimir nuestra lista de compras! Foreach ($ shoping_list como $ list_item): echo $ list_item. ”; EndForeach; El resultado de lo anterior será “plátanos naranjas”, no nulo. En términos más generales, este código siempre se comportará de acuerdo con las expectativas, incluso cuando $ new_list no es la matriz que debería ser. ¿Por qué es mejor este código? Gracias a IS_Array () que no deja nada al tipo de trabajo que podría ser $ New_List. También es mejor, en mi opinión, debido al país ($ new_list)> 0 cheque, en lugar de solo el mostrador ($ new_list). Esas cosas se comportan de manera similar, pero en uno dices lo que quieres decir: “Quiero asegurarme de que esta matriz tenga más de 0 elementos”, y en otro confías en la estenografía ligeramente segura. No hagas esto en las condiciones de PHP. 3. No se confunda con la equivalencia gratuita si algo es igual a otra cosa, entonces ciertamente es igual a eso, ¿verdad? ¡Decir ah! La respuesta es, por supuesto, no, y nosotros, los programadores de PHP, ahora estamos tranquilos en nuestro golpe hawaiano. Observe: $ Integer = 5; // Soy el entero 5. $ string = ‘5’; // Soy la cadena “5”. $ bool = $ integer == $ string; // Este es PHP ‘
S Prueba de equivalencia suelta. ¿Tiene estas dos cosas iguales? // $ bool es ahora operador == Equivalencia gratuita de prueba: ¿son dos cosas iguales, una vez que ignora su tipo de datos? También hay! =, Desigual gratis: ¿hay dos cosas desiguales, una vez que ignora su tipo de datos? Si encuentra un razonamiento poco claro, entonces estamos de acuerdo, y podemos conducir a todo tipo de resultados potencialmente extraños, como demostraremos ahora. Ejemplo de equivalencia libre (evite) Aquí hay dos comprobaciones que fallaron si usan equivalencia gratuita, más errores posteriores. $ entero = 5; $ string = ‘00005’; if ($ integer == $ string): echo ‘espera qué’; // Este código se ejecutará, que es malo Echo Strlen ($ String); // Imprimir “5” Echo Strlen ($ Integer); // Imprime “1” // Supongo que no eran tan iguales. // ¿Y qué hemos ejecutando strlen () en un entero? Terminara si; // Tal vez no sean equivalentes después de todo. Vamos a comprobar de nuevo. if ($ integer! = $ string): echo ‘bien, bueno’; // Este código no se ejecuta, lo cual es malo: echo ‘espera qué’; // Este código se ejecutará, lo cual es malo endif; Ejemplo de equivalencia estricta (uso) Aquí hay dos condiciones de PHP muy mejoradas: $ Integer = 5; $ string = ‘00005’; if ($ integer === $ string): echo ‘espera qué’; // Este código no se ejecutará, porque los intengadores no son cadenas endif; // ¿no es igual? Asegurémonos si ($ integer! == $ string): echo ‘bien, bueno’; // Este código se ejecutará, lo cual es bueno: echo ‘espera qué’; // Este código no se ejecutará, lo cual es bueno endif;

Tres consejos para escribir PHP Condiciones estrechas
Tags Tres consejos para escribir PHP Condiciones estrechas
homefinance blog