Algunas curiosidades -o tips- en el lenguaje PHP

No sé si definirlas como curiosidades, en realidad vendría a ser algo así como datos interesantes o por el estilo, pero bueno, así los encontré en internet y hoy los comparto aquí por si a alguien le sirva. La mayoría de ‘curiosidades’ se evocan a cómo es que haciendo tal o cual cosa se mejora el rendimiento del servidor, que es más rápido en ejecutarse, y algunos que otros en que se puede aprovechar un poco más este muy buen lenguaje.

Nota: Aparte del post en donde saque estas curiosidades, estoy linkeando algunas funciones al manual PHP online para despejar cualquier duda.

1.- Muchas veces cuando queremos pasar variables de un formulario a otro para procesar información ingresada por el cliente, usamos las variables $_POST y $_GET, la diferencia de ambas es que en $_GET se ven en el link las variables que se envían, mientras que en $_POST no. Por lo que en PHP tendríamos que recibir una variable así:

//Suponiendo que enviamos desde un formulario HTML a un control PHP
$MiVariableRecibida = $_POST["txtParaEnviar"]; //Asumiendo que'txtParaEnviar' es un control de formulario.
$MiVariableRecibida = $_GET["txtParaenviar"]; 

Dependiendo claro como se define en el formulario con el atributo method (ejm. method=”GET”). La curiosidad aquí es que si no sabemos cómo recibirla, o nos da lo mismo cualquiera de las dos formas, podríamos recibirla como  $_REQUEST. Asi:

$MiVariableRecibida = $_REQUEST["txtParaEnviar"]; 

Nota del tip: Sirve también para $_COOKIE.

2.- Todos los que nos metemos al mundo del PHP tenemos bien en claro que PHP genera una salida HTML en el lado del cliente, pero esto, no es una verdad absoluta, lo que pasa es que por defecto la salida de PHP está configurada como Content-type: text/html. Por lo que si definimos otro tipo de MIME, y dependiendo la compatibilidad, PHP mostrara una salida diferente. En muchas ocasiones se utiliza para crear imágenes dinámicas (un ejemplo clásico es el captcha), otras para crear XML (como en los feeds RSS de los blogs) entre otras cosas posibles.

3.- Ámbito de las variables globales en las funciones. Una variable utilizada en una función es de ámbito local por default a no ser que se declare en el ámbito de la función como ‘global’. Ejem.:

$string="ABC";
$string{1}=="B"
$my_array = array('A','B','C');
$my_array[1]=="B"; 

4.- Include o Require. Los include o require ‘pegan’ el código de un archivo en otro, así pues podría declararse un index.php , y dentro especificar que vamos a mostrar el contenido de otra página siempre que esté dentro del servidor (requerir archivos de otro servidor tiene más requisitos) de esta manera:

//Archivo incluido included.php
<?php echo 'Hola, soy incluido'; ?>
//Archivo inclusor includer.php
<?php include('included.php');
 echo '<br /> Aquí arriba esta lo incluido.' ?> 

Al llamar a includer.php la salida será:

Hola, soy incluido
Aquí arriba esta lo incluido

La diferencia y tip que vengo a citar es que si falla un require se produce un error que termina la ejecución del código, mientras que include sólo produce un aviso y se continúa con el script. Un Require se incluye y procesa SIEMPRE, con independencia del lugar del código donde se encuentre, mientras que con

Include sólo se incluirá el fichero, y se procesará, SI SE ENTRA en el bloque de código en el que se ejecuta la orden, require incrusta el fichero indicado sin importar la extensión, como código PHP a ser ejecutado justo en el momento y lugar de su llamada.

5.- El operador “idéntico” (===) se puede utilizar para comprobar que, si $entero=0 y $st=”0?, $entero==$st pero NO $entero===$st. Hay que tener en cuenta que es más lento.

6.- Se puede utilizar foreach como en Perl y switch como en C.

7.- Podemos forzar el tipo de variable al indicar el elemento de un array. Por ejemplo:

$indice_cadena = "34";
$array_de_valores[(int) $indice_cadena];

//ya que:
$array_de_valores[$indice_cadena];  // sería distinto. 

8.- Muchas veces cuando crasheamos con archivos (crashear = que hagas algo mal y salten errores en pantalla) solemos ver los ‘warnings’ o ‘faltal errors’ que suelta la pagina independiente de como esté el diseño CSS de nuestra página web. Eso se puede evitar en cierta forma, una manera obvia es resolviendo tus errores, pero otra, un poco mas como pal momento, es colocando un arroba (@) delante de las funciones. Por ejemplo:

//Suponiendo que el archivo noexiste.txt no existe,
$filehandle = fopen("noexiste.txt", "r"); //Saltara un error.
$filehandle = @fopen("noexiste.txt", "r"); //Existirá el error, pero no saldrá en pantalla. 

Esto no quiere decir que solucionamos el error, sino más bien que lo maquillamos; puede ser útil algunas veces donde no encuentras el error y sin el warning pasaría piola.

9.- La redirección más rápida que podemos usar es mediante la cabecera HTTP Location (trabaja en cualquier navegador) en la función header. Ejemplo:

header("Location: index2.php"); //suponiendo que donde se escribio esto es index.php, automáticamente se redirecciona a index2.php 

10.- str_replace es más rápido que preg_replace, pero strtr es 4 veces más rápido que str_replace.

11.- Utilizar $row['id'] es 7 veces más rápido que usar $row[id] (donde id es un número). Esto al momento de recoger datos de un resultset.

12.- Incrementar la propiedad de un objeto ($this->prop++) es 3 veces más lento que incrementar una local.

13.- Incrementar una variable local sin definir es 9-10 veces más lento que una pre-inicializada.

14.- Usar comilla simple (‘) en lugar de la doble (“) en tus Strings hará las cosas un poco más rápidas, ya que entre comillas simples no se buscarán variables. Por supuesto, hazlo solo cuando no necesites variables en tu cadena.

Espero les sean útiles estos tips o curiosidades, a mi si me sirvieron. Saludos!!!

PD: Hay algunos que no cite porque aún no termino de entender. Véase la fuente original.

Tomado de | Toma2Tazas