PHP · Referencia y buenas prácticas

Todo sobre PHP, en español.

La mayoría de la gente llega aquí buscando qué hace un símbolo que acaba de ver en el código de otro. Esa parte está entera y ordenada. Y después, las dos cosas donde equivocarse en PHP no da un error sino una brecha: las contraseñas y las dependencias.

10 artículos3 pistas

Operadores

Qué hace ese símbolo

La referencia completa primero y luego uno por operador, porque así es como llega la gente: buscando qué significa exactamente lo que acaba de ver en el código de otro.

Seguridad

Contraseñas y dependencias

Las dos cosas de un proyecto PHP donde equivocarse no da un error, da una brecha: cómo se guardan las contraseñas y qué código acaba realmente instalado en producción.

Escribir mejor

Dos piezas para código que aguanta

Ni son urgentes ni las busca nadie por su nombre, y aun así son las que se notan en un proyecto que crece: cómo estructurar familias de objetos y cómo no comerse la memoria.

Alrededor

Hacia dónde se sigue

PHP casi nunca se usa solo. Estas dos guías son los caminos naturales desde aquí, según si lo tuyo es el framework o los agentes.

FAQ

Preguntas frecuentes

¿Cuál es la diferencia entre == y === en PHP?

== compara valores después de convertir tipos, === compara valor y tipo sin convertir nada. La regla práctica es usar === por defecto y == solo cuando la conversión sea exactamente lo que quieres, que es menos veces de las que parece. PHP 8 cambió parte de esas conversiones, y ese cambio está cubierto en el post de igualdad.

¿Cuándo uso el ternario y cuándo ??

El ternario evalúa una condición; ?? comprueba si algo es null o no existe. Si lo que quieres es un valor por defecto para una clave que puede faltar, ?? es la respuesta y además no lanza warning. Si hay una condición de verdad que decidir, es el ternario.

¿Cómo se hashean contraseñas en PHP?

Con password_hash y password_verify, nunca con md5 ni sha1. password_hash elige el algoritmo por ti (bcrypt por defecto, Argon2id disponible) y mete la sal dentro del propio hash. El detalle que sorprende es el límite de 72 bytes de bcrypt, que trunca sin avisar.

¿Hay que commitear el composer.lock?

Sí, siempre, en aplicaciones. Es lo que garantiza que producción instale exactamente las versiones que probaste. En una librería es distinto: ahí el lock no se publica, porque las versiones las resuelve el proyecto que la consume.

¿Esta guía sirve para Laravel?

Sirve para el PHP que hay debajo, que es el mismo. Lo específico del framework (Eloquent, rutas, Blade, deploy) está en la guía de Laravel desde cero, que es un curso y se lee en orden, al contrario que esta página.

Por dónde empezar

Empieza por el símbolo.

Si has llegado buscando qué significa ?? o cuál es la diferencia entre == y ===, la referencia de operadores tiene los ocho grupos con ejemplos de cada uno.