Cómo pasar una entrevista de PHP: análisis de las preguntas principales
Una entrevista para el puesto de desarrollador PHP no solo es una prueba de sintaxis, sino también un examen de comprensión de arquitectura, seguridad y estándares modernos (PSR). En este artículo, hemos recopilado 10 preguntas clave que se hacen con mayor frecuencia en entrevistas para niveles Junior y Middle. Cada pregunta va acompañada de una explicación, un ejemplo de código y las trampas típicas.
1. ¿En qué se diferencia echo de print? ¿Y print_r de var_dump?
Esta es una pregunta básica que evalúa el conocimiento de las funciones de salida incorporadas.
echo— es una construcción del lenguaje, no devuelve un valor. Funciona más rápido queprint.print— también es una construcción, pero siempre devuelve1. Se puede usar en expresiones.print_r— muestra información legible para humanos sobre una variable (arrays, objetos). Devuelve una cadena si el segundo parámetro estrue.var_dump— muestra el tipo y el valor de la variable, incluida la longitud de la cadena. Es útil para la depuración.
<?php$arr = ['a' => 1, 'b' => 2];echo print_r($arr, true); // Devuelve una cadena, no la muestra inmediatamentevar_dump($arr); // array(2) { ["a"]=> int(1) ["b"]=> int(2) }?>2. ¿Qué es la autocarga de clases y cómo funciona con Composer?
La autocarga (autoloading) permite a PHP incluir clases automáticamente la primera vez que se accede a ellas, sin un require_once explícito.
- Antes se usaba la función
spl_autoload_register(). - Ahora el estándar de facto es Composer y su cargador automático.
- Composer admite PSR-4 (espacios de nombres) y PSR-0 (obsoleto).
// composer.json{ "autoload": { "psr-4": { "App\\\\": "src/" } }}
// Después de composer dump-autoload// Archivo src/User.php con namespace App;$user = new \\App\\User(); // Se cargará automáticamente3. Diferencia entre include, require, include_once y require_once
Pregunta sobre la comprensión del trabajo con archivos externos y el manejo de errores.
include— emite un Warning si el archivo no se encuentra, el script continúa su ejecución.require— emite un Fatal Error, el script se detiene.*_once— comprueba si el archivo ya se ha incluido anteriormente y no lo vuelve a incluir.
Trampa: include en un bucle puede provocar una inclusión repetida y un error de redefinición de funciones si no se usa include_once.
4. ¿Cómo funciona PDO y por qué es mejor que las funciones mysql_*?
PDO (PHP Data Objects) es una interfaz para trabajar con bases de datos. Es obligatorio conocerlo para cualquier desarrollador PHP moderno.
- Admite diferentes DBMS (MySQL, PostgreSQL, SQLite) — basta con cambiar el DSN.
- Utiliza consultas preparadas (prepared statements), lo que protege contra inyecciones SQL.
- Facilita el trabajo con transacciones y el manejo de errores mediante excepciones.
<?php$dsn = 'mysql:host=localhost;dbname=test;charset=utf8';$pdo = new PDO($dsn, 'user', 'pass', [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');$stmt->execute(['email' => $email]);$user = $stmt->fetch(PDO::FETCH_ASSOC);?>5. ¿Qué son los métodos mágicos en PHP? Dé ejemplos
Los métodos mágicos comienzan con doble guion bajo (__) y se llaman automáticamente ante ciertas acciones con un objeto.
__construct()— se llama al crear un objeto.__get()/__set()— se llaman al acceder o modificar propiedades inaccesibles.__call()/__callStatic()— se llaman al invocar métodos inaccesibles.__toString()— permite definir cómo reaccionar cuando un objeto se trata como una cadena.__invoke()— se llama cuando un objeto se usa como función.
<?phpclass User { private $data = [];
public function __get($name) { return $this->data[$name] ?? null; }
public function __set($name, $value) { $this->data[$name] = $value; }
public function __toString() { return $this->data['name'] ?? 'Unknown'; }}
$user = new User();$user->name = 'Alice';echo $user->name; // Aliceecho $user; // Alice?>