send
Grupo de Telegram
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

TIPS para programar mejor en php

  • 6 Respuestas
  • 2414 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

This topic contains a post which is marked as Best Answer. Press here if you would like to see it.

Desconectado alexander1712

  • *
  • Underc0der
  • Mensajes: 851
  • Actividad:
    0%
  • Reputación -2
    • Ver Perfil
    • El blog del programador
    • Email
« en: Octubre 24, 2012, 09:55:52 pm »

buenos días a todos los usuarios y visitantes de UnderC0de, estaba viendo un código de un usuario del foro cuando noté varios problemas referente al uso de comillas dobles, nulos y otras cosas que a continuación explicaré.

¿Cuándo usar apostrofes ('') y cuando usar comillas ("")?

Una de las primeras cosas que noté fue que la persona que desarrolló ese código, no tenía una clara idea de cuando usar comillas y cuando usar apostrofes, asi que pasaré a explicarlo:

Los apostrofes nos permiten expresar cadenas literales... ¿que quiere decir esto? que si nosotros ponemos por ejemplo

Código: You are not allowed to view links. Register or Login
echo '$hola';
se mostrará exactamente $hola, y no el contenido de la variable, por lo tanto, para poder poner una variable y juntarla con un texto literal sería así:

Código: You are not allowed to view links. Register or Login
echo 'hola'.$nombre;
ese es el uso correcto del concatenador, osea el punto, que nos permite juntar (concatenar)  el literal con una variable.



Por otra parte tenemos el uso de textos parseados, a que me refiero con esto? a las comillas. que lo que hacen es "parsear" o dicho de otra forma, reemplazar las variables por sus valores.

por ejemplo si ponemos

echo "$hola";

en vez de mostrar $hola, mostrará el valor de $hola.

en este caso para poner literales y variables sería así:

Código: You are not allowed to view links. Register or Login
echo "hola $nombre";
de esta forma no utilizamos el concatenador.

no es conveniente usar "hola ".$nombre porque estamos utilizando un concatenador además de decirle al interprete de php que parsee el hola, por ende se pierden recursos.

de paso, aclarar que yo uso la primera técnica (literal concatenado con punto) para así reducir el consumo mayor que tiene parsear textos.



Constantes de php

Otra cosa que noté es que la gente tiene la costumbre de utilizar '' para representar valores nulos, por ejemplo si quieren declarar una variable pero sin darle valor ponen así

Código: You are not allowed to view links. Register or Login
$alex = '';
lo que quiero comentarles es que en este caso pueden utilizar la constante NULL de modo que queda un poco más vistoso el código.

Código: You are not allowed to view links. Register or Login
$alex = NULL;
y también aclarar que es recomendable que todas las constantes esten en mayusculas, por ejemplo:

Citar
TRUE
FALSE
NULL
etc.



Diferencia entre dos iguales y tripleigual

ya que estamos quiero especificar la diferencia entre poner

== y ===

si nosotros ponemos:

Código: You are not allowed to view links. Register or Login
if ( $roberto == 1 )
lo que verifica el if, es si es igual a uno en valor, a que me refiero? a que si la variable $roberto es igual a uno.

si nosotros ponemos:

Código: You are not allowed to view links. Register or Login
if ( $roberto === 1 )
no solo verificamos que sea igual a uno, sino que también sea del mismo tipo, por ejemplo:

si nosotros ponemos

Código: You are not allowed to view links. Register or Login
$roberto = 1;
if ($roberto == TRUE)

el if se cumple porque TRUE es lo mismo que 1, pero si nosotros ponemos

Código: You are not allowed to view links. Register or Login
$roberto = 1;
if ($roberto === TRUE)

la condición no se cumple, porque si bien TRUE es lo mismo que 1, el 1 que asignamos a roberto en la linea anterior al if, es de tipo INT y el TRUE es de tipo BOOLEAN.

tenga en cuenta que el distinto sería:

Código: You are not allowed to view links. Register or Login
!=
!==



Empty e Isset

para verificar si una variable no tiene valor normalmente ustedes ponen

Código: You are not allowed to view links. Register or Login
if ( $var == '' )
yo les aconcejé en esta guía de tips usar NULL por lo que pondrían:

Código: You are not allowed to view links. Register or Login
if ( $var == NULL )
en realidad hay una función que verifica si está vacío:

Código: You are not allowed to view links. Register or Login
if ( empty($var) )
como ven tiene una nomenclatura más vistosa.

No pueden aplicarle empty a una función que devuelva algún valor.
Ej:

Código: You are not allowed to view links. Register or Login
<?php
 
if(empty(ej())) {
        echo 
"Si\n";
}
 
function 
ej() {
        return 
TRUE;
}
 
 
?>

Salida:

Código: You are not allowed to view links. Register or Login
~/www/public$ php a.php
PHP Fatal error:  Can't use function return value in write context in /home/yoya/www/public/a.php on line 3

otro dato interesante es que si requieren verificar con if una variable que no existe o puede no existir todos sabemos que si displays errors está activado nos dará error "Warning undefined variable"

para evitar esto podemos poner

Código: You are not allowed to view links. Register or Login
if(isset($var) && $var==1)
esto hará que antes de verificar una variable inexistente cumple cierta condición, verificará que exista.
(tenga en cuenta que la función isset verifica la existencia de una variable)

También algo que se debe tener en cuenta, normalmente cuando trabajamos con datos que manda el usuario sea por GET o POST. Normalmente se comprueba si la cadena que llega esta vacía, tipicamente se utiliza isset o empty para hacer la comprobacion pero estos pueden dar falsos positivos.

isset, dara verdadero si la variable ha sido definida aunque no contenga ningún valor.

empty, dará verdadero si la variable ha sido definida y contiene algún valor distinto PERO si la variable contiene solo espacio en blanco la dará como valida. En este caso, hay que utilizar el consejo que nos da la misma documentacion.

Código: You are not allowed to view links. Register or Login
<?php
 
$ej 
" ";
 
if (
trim($ej) == FALSE) {
 
        echo 
'La variable contiene algun valor';
}else {
 
        echo 
'La variable esta vacia';
}
 
?>



forzar tipos

otra cosa interesante que me topé a lo largo de mi aprendizaje de php fue forzar un tipo de dato. (type casting)

por ejemplo:

Código: You are not allowed to view links. Register or Login
$alex = (int) 'Pedrito 1 clavo un clavito';
ese int entre parentesis obligará a guardar solo los numeros en la variable.

tambien podemos usar por ejemplo (float)

es útil si vamos a trabajar con comparación de tres iguales ( === )



Incremento y decremento

ésto es algo que a mi me ocurría cuando yo cambié de lenguaje a php, yo hacía así para sumar uno a un contador:

Código: You are not allowed to view links. Register or Login
$c = $c + 1;
en php eso fue cambiado por

Código: You are not allowed to view links. Register or Login
$c++;
y también está

Código: You are not allowed to view links. Register or Login
$c--;
y si quieren sumar algo a una variable (que no sea solo incrementar en uno)

Código: You are not allowed to view links. Register or Login
$var+=10;
eso sumará 10 al valor actual de $var

Sobre esto ++ y --. Dependiendo el lugar donde lo pongas, antes o después de la variable, tendrá un efecto diferente.

Ejemplo:
Código: You are not allowed to view links. Register or Login
<?php
 
$A 
10;
$B 10;
echo 
$A++."\n";
echo ++
$B."\n";
?>

Salida:

Código: You are not allowed to view links. Register or Login
$ php a.php
10
11

Si agregas el ++ antes de la variable, lo que quiere decir es que primero se incrementara la variable y luego se ejecuta la variable.
Si agregas el ++ después de la variable, lo que quiere decir es que primero se ejecuta la variable, luego se incrementa (conocido como preincremento y predecremento).

También otro pequeño tip, aparte de +=, puedes utilizar los demás operadores aritméticos. +=, -=, *=, /=, etc...



Operador Ternario

el Operador Ternario o if simplificado es muy útil cuando entiendes como funciona y te das cuenta en donde usarlo, la sintaxis es así:

condicion ? si se cumple : si no se cumple;

se evalúa la condición, y devuelve en caso de ser verdadera el valor a la izquierda de los dos puntos, y en caso de no cumplirse, devuelve el valor a la derecha.

ejemplo:

Código: You are not allowed to view links. Register or Login
echo $edad>17 ? 'usted es mayor de edad' : 'usted es menor de edad';



identación y comentarios

una cosa que siempre me parece horrorosa en los códigos es que esté mal identado.

la identación consiste en mantener un orden en el código, las tabulaciones entre la apertura de llaves de funciones, etc.

un ejemplo de mi identación:

Código: You are not allowed to view links. Register or Login

codigo
lalalal
mas codigo
function prueba()
  {
  código de la función
  while()
     {
       codigo de mi while
     }   
  fin del codigo de la funcion
  return 0;
  }
fin de mi código php

también es importante documentar el código con comentarios.

hay 3 tipos de comentarios

Código: You are not allowed to view links. Register or Login
// una linea

/*
mas de una linea
*/

# código que ya no uso

esa es mi forma de comentar, entonces arriba de cada linea del código pongo que hace con un comentario de una linea.

y al principio de mi código pongo de que trata y el autor de éste modo:

Código: You are not allowed to view links. Register or Login
/**
   * Nombre del proyecto: Ejemplo
   * Estado: Prototipo
   * Fecha de edición: 24/10/12
   * Autor: Alexander1712
   * Web: underc0de.org
   */

y cuando quito alguna linea de mi código, no la borro, sino que la comento con un numeral (#) delante.

Sobre los comentarios, hay otro tipos de comentarios que en realidad que se utilizan para generar documentacion automatica o para indicar como funciona el codigo, una funcion, que tipo de valor retorna, que tipo de valor recive, etc...

Que viene siendo lo mismo que lo que hace JavaDoc.

You are not allowed to view links. Register or Login

El que yo conozco es You are not allowed to view links. Register or Login

esos son los tips que yo les dejo, espero que les sirvan, un saludo! Alexander171294

Agradezco a ~Yoya~ por su colaboración con el post, e invito a quien desee agregar algún comentario sobre lo que le falta y no se me ocurrió, o que quisieran agregar (téngase en cuenta que estaba en la escuela armando el post, y simplemente a memoria, sin basarme en la documentación oficial)
« Última modificación: Octubre 25, 2013, 11:20:12 pm por Expermicid »

Desconectado Pr0ph3t

  • *
  • Underc0der
  • Mensajes: 443
  • Actividad:
    0%
  • Reputación 0
  • © Underc0de Team
    • Ver Perfil
  • Skype: thebrowfc
« Respuesta #1 en: Octubre 25, 2012, 10:30:00 am »
Buen aporte, muy útil  ;)
Twitter: @The_Pr0ph3t
pr0ph3t@hotmail.es

Desconectado ~ Yoya ~

  • *
  • Underc0der
  • Mensajes: 149
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #2 en: Octubre 26, 2012, 02:16:50 pm »
Buen aporte solo unas cosas que tener en cuenta.

No pueden aplicarle empty a una función que devuelva algún valor.
Ej:
Código: PHP
  1. <?php
  2.  
  3. if(You are not allowed to view links. Register or Login(ej())) {
  4.         echo "Si\n";
  5. }
  6.  
  7. function ej() {
  8.         return TRUE;
  9. }
  10.  
  11.  
  12. ?>
Salida:
Código: You are not allowed to view links. Register or Login
~/www/public$ php a.php
PHP Fatal error:  Can't use function return value in write context in /home/yoya/www/public/a.php on line 3


También algo que se debe tener en cuenta, normalmente cuando trabajamos con datos que manda el usuario sea por GET o POST. Normalmente se comprueba si la cadena que llega esta vacía, tipicamente se utiliza isset o empty para hacer la comprobacion pero estos pueden dar falsos positivos.

isset, dara verdadero si la variable ha sido definida aunque no contenga ningún valor.

empty, dará verdadero si la variable ha sido definida y contiene algún valor distinto PERO si la variable contiene solo espacio en blanco la dará como valida. En este caso, hay que utilizar el consejo que nos da la misma documentacion.

Código: PHP
  1. <?php
  2.  
  3. $ej = " ";
  4.  
  5. if (You are not allowed to view links. Register or Login($ej) == FALSE) {
  6.  
  7.         echo "La variable contiene algun valor\n";
  8. }else {
  9.  
  10.         echo "La variable esta vacia\n";
  11. }
  12.  
  13. ?>


Sobre lo de  forzar tipos, correctamente se llama Type casting. Es bueno saber el nombre correcto de la cosas, ya que normalmente muchas cosas que vemos en algún lenguaje.


Sobre lo de incremento y decremento, algo que muchas personas no conocen y la verdad es un buen TIPS.

Es sobre esto ++ y --. Dependiendo el lugar donde lo pongas, antes o después de la variable, tendrá un efecto diferente.

Ejemplo:
Código: PHP
  1. <?php
  2.  
  3. $A = 10;
  4. $B = 10;
  5. echo $A++."\n";
  6. echo ++$B."\n";
  7. ?>

Salida:
Código: You are not allowed to view links. Register or Login
$ php a.php
10
11

Si agregas el ++ antes de la variable, lo que quiere decir es que primero se incrementara la variable y luego se ejecuta la variable.
Si agregas el ++ después de la variable, lo que quiere decir es que primero se ejecuta la variable, luego se incrementa.

También otro pequeño tip, aparte de +=, puedes utilizar los demás operadores aritméticos. +=, -=, *=, /=, etc...


Lo de if simplificado, que estas explicando en realidad se llama Operador Ternario. Que son parte de los operadores en PHP.


Sobre los comentarios, hay otro tipos de comentarios que en realidad que se utilizan para generar documentacion automatica o para indicar como funciona el codigo, una funcion, que tipo de valor retorna, que tipo de valor recive, etc...

Que viene siendo lo mismo que lo que hace JavaDoc.

You are not allowed to view links. Register or Login

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

Marked as best answer by en Abril 15, 2018, 12:07:47 am

Desconectado alexander1712

  • *
  • Underc0der
  • Mensajes: 851
  • Actividad:
    0%
  • Reputación -2
    • Ver Perfil
    • El blog del programador
    • Email
« Respuesta #3 en: Octubre 26, 2012, 03:53:35 pm »
gracias por las aclaraciones, son bien recibidas.

las agrego al tema principal.

saludo!

Desconectado sisvot

  • *
  • Underc0der
  • Mensajes: 5
  • Actividad:
    0%
  • Reputación 0
  • Php + Php
    • Ver Perfil
  • Skype: sisvot
« Respuesta #4 en: Octubre 29, 2012, 12:27:09 am »
Muy buenos los Tips :)
...Sisvot...

Desconectado quen

  • *
  • Underc0der
  • Mensajes: 18
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #5 en: Octubre 29, 2012, 02:24:51 am »
no solo son buenos tips, sino que estan muy bien explicados.

Te digo la verdad, me lei manuales, tutoriales, y hasta compre un "libro" en php de 300 hojas ( todo esto antes q no sabia php), y despues cuando aprendi php, me di cuenta q todo estaba mal explicado (el "libro" tenia errores de ortografica y de codigo el cual daban errores), destaco lo del "libro" porque nose quien hace un "libro" y no lo verifica como corresponde.

Suponiendo que cualquiera de aqui escriba un libro, creo q lo mirara mas de mil veces para comprobar todo.  y sobre todo cuando es una marca tan conocida como USERS.

Y estos tips son muy importantes, fijen lo de la comillas simples y dobles que parece una terrible boludes, sin embargo... muchos libros, y manuales eso lo dejan de lado, por lomenos todo lo que lei yo, lo explicaban muyy por arriba, o directamente no lo explicaban, simplemente decian que se usaba "" o ''  para imprimir en pantalla.

Saludos

Desconectado alexander1712

  • *
  • Underc0der
  • Mensajes: 851
  • Actividad:
    0%
  • Reputación -2
    • Ver Perfil
    • El blog del programador
    • Email
« Respuesta #6 en: Octubre 29, 2012, 03:15:18 pm »
You are not allowed to view links. Register or Login
no solo son buenos tips, sino que estan muy bien explicados.

Te digo la verdad, me lei manuales, tutoriales, y hasta compre un "libro" en php de 300 hojas ( todo esto antes q no sabia php), y despues cuando aprendi php, me di cuenta q todo estaba mal explicado (el "libro" tenia errores de ortografica y de codigo el cual daban errores), destaco lo del "libro" porque nose quien hace un "libro" y no lo verifica como corresponde.

Suponiendo que cualquiera de aqui escriba un libro, creo q lo mirara mas de mil veces para comprobar todo.  y sobre todo cuando es una marca tan conocida como USERS.

Y estos tips son muy importantes, fijen lo de la comillas simples y dobles que parece una terrible boludes, sin embargo... muchos libros, y manuales eso lo dejan de lado, por lomenos todo lo que lei yo, lo explicaban muyy por arriba, o directamente no lo explicaban, simplemente decian que se usaba "" o ''  para imprimir en pantalla.

Saludos

agradezco el cumplido y la buena onda de todos, me gustaría que entre todos hagamos una sección mejor de php, si quieren aportar algo o preguntar algo, siempre estoy dispuesto a ayudar.

y si ven algún error en alguna explicación siempre es bienvenida toda critica constructiva.

un saludo para todos!

 

¿Te gustó el post? COMPARTILO!



10 Mejores Librerías Para Seguridad En PHP - Seguridad De Datos Desde PHP

Iniciado por graphixx

Respuestas: 0
Vistas: 1583
Último mensaje Enero 23, 2016, 06:03:10 am
por graphixx
[APORTE] edPDF - "Libreria" para edicion y creacion de PDFs

Iniciado por kid_goth

Respuestas: 4
Vistas: 880
Último mensaje Marzo 10, 2014, 07:15:31 pm
por kid_goth
UserClass [Clase abstracta para manejar usuarios en cualquier sistema y ocasión]

Iniciado por alexander1712

Respuestas: 0
Vistas: 847
Último mensaje Octubre 08, 2013, 04:37:07 pm
por alexander1712
Script para convertir planos cartograficos de OPENJUMP a AMCHARTS SVG JSON

Iniciado por graphixx

Respuestas: 0
Vistas: 1278
Último mensaje Septiembre 21, 2015, 11:18:27 pm
por graphixx
Clase para crear y modificar un archivo Excel desde PHP

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1529
Último mensaje Febrero 24, 2010, 11:42:44 am
por ANTRAX