Hoy veremos algunos tip’s para programadores que recién inician su largo camino con PHP (listo, lo aclaré para que no me bombardeen!) y así puedan llevar una mejor estructura optimizada de sus pequeños hijos. Se recomienda aplicarlo para los que aún no usan frameworks que siguen el modelo MVC. La lista, no tiene ningún orden de importancia, todos son importantes 🙂
Tip’s PHP
Aquí, inicio los 6 tip’s que te recomiendo a la hora de programar en php (vuelvo a aclarar, si recién empiezas).
1. No usar rutas relativas, en su lugar definir ROOT
Es muy recomendable, no usar las rutas relativas (como «../../script/archivo.php») ya que si nos encontramos en distintos archivos, ésto puede variar y nos puede ocasionar más de un problema. Lo mejor, sería definir una constante que podemos llamar «ROOT» y a ella asignarle las constantes _FILE_ que obtendrá la ruta completa:
define('ROOT', pathinfo (__FILE__, PATHINFO_DIRNAME)); require_once (ROOT. '../../lib/some_class.php'); // resto del código
2. Evitar el uso de require_once, include, require, include_once
Cuando desarrollamos un proyecto, nos vemos en necesidad de hacer llamadas a clases o librerías desde otros archivos y para ello, usamos require_once, include, etc; los cuales son bastantes primitivos debido a que hacemos llamado a la ruta relativa del archivo. Para ello, podemos usar la siguiente función que nos ayudará mucho a optimizar las llamadas, además de verificar si existe o no dicha librería / clase.
function load_class($class_name) { //ruta de acceso al archivo de clase $path = ROOT. '/lib /'.$class_name.'.php'); if(file_exists($path)) { require_once ($path); } } load_class('database'); load_class('mail');
3. Mensajes de estado por consulta, etc
Bien, éste punto es muy interesante debido a que lo vemos aplicado en frameworks php. Se trata de usar sesiones para mostrar mensajes luego de realizar algun tipo de consulta (ingreso de datos incorrectos, usuario inválido, etc).
Definiendo un poco sobre qué es exactamente, les pongo el ejemplo de que hagamos un cambio en una base de datos desde php, pero queremos mostrar un mensajito de «se ha realizado el cambio». Lo normal y precario sería enviarlo por una variable tipo GET, pero sería muy antiestético, y… tonto.
Para ello, podemos crear una función que almacene el mensaje y otra que recupere dicho mensaje. Ojo, que debemos tener session_start() en cada página (en la primera línea 🙂 ):
function set_flash($msg) { $_SESSION['mensaje'] = $msg; } function get_flash() { $msg = $_SESSION['mensaje']; unset($_SESSION['mensaje']); return $msg; }
Y así, podríamos poner en práctica dicha función:
<?php if($_POST) { set_flash('Datos post enviados'); } ?> <html> <body> El mensaje es : <?php echo get_flash(); ?> <form> ... </form> </body> </html>
4. Omitir la etiqueta de cierre PHP si es una librería o clase
Este consejo, es muy importante. Así que no olvides ponerlo en práctica ya que te evitará muchos problemas 🙂
class super_class { function super_funcion() { // súper código } } // no cerramos la etiqueta php
¿Williams, por qué?.
Pues, la razón es que podemos generar un espacio al cerrar la etiqueta php ya que nuestro archivo lo tomará como un «echo» y por lo tanto, generará error de headers (cabeceras).
5. Comprobar si el formulario ha sido enviado por POST
Esto es importante para evitar que se acceda a un script que se debe ejecutar sólo si se ha enviado por método POST.
Lo mejor, es validar antes. Puedes hacerlo de ésta sencilla forma y evitarte futuros problemas:
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['submit'])) { //Ejecutar código }
Con eso, puedes ser feliz.
6. ¿Tienes muchas funciones? hazlas una clase!
Si, por ejemplo tienes funciones como éstas:
function utility_a () { // Esta función hace una cosa utilidad como el procesamiento de cadenas } function utility_b () { // Esta función hace que la utilidad otro como el procesamiento de base de datos } function utility_c () { // Esta función es ... }
Lo mejor, es definirlo como una clase para mantener un orden de estructura adecuado:
class Utilidad { public static function utility_a () { } public static function utility_b () { } public static function utility_c () { } } // y llamarlos como $a = Utilidad::utility_a(); $b = Utilidad::utility_b();
¿La ventaja de hacer ésto? es que si tenemos funciones similares en otras clases, no causará efecto ya que estamos definiendolo por cada clase.
Estos son 6 recomendaciones si eres principiante, ojo que hay muchas más (puedes visitar este link para que puedas seguir leyendo la fuente original). Si tienes otro tip que comentar, no lo dudes y comparte con otros «phperos«.