Introdução
A entrevista para a posição de desenvolvedor PHP não é apenas um teste de sintaxe da linguagem, mas também um teste de compreensão de arquitetura, segurança e abordagens modernas. Muitos candidatos se perdem em perguntas básicas porque não se preparam sistematicamente. Neste artigo, vamos analisar as principais perguntas mais frequentes em entrevistas de PHP, com exemplos de código e explicações. O material será útil tanto para iniciantes quanto para desenvolvedores experientes que desejam atualizar seus conhecimentos.
Tipos de dados e coerção de tipos
Quais tipos de dados existem em PHP?
O PHP suporta 8 tipos de dados principais, divididos em três grupos:
- Escalares:
bool,int,float,string. - Compostos:
array,object,callable,iterable. - Especiais:
resource,null.
Exemplo de verificação de tipo:
$value = "123";
if (is_numeric($value)) {
$intValue = (int) $value; // coerção para int
var_dump($intValue); // int(123)
}
Qual a diferença entre == e ===?
O operador == compara valores após a coerção de tipos, enquanto === compara sem coerção (comparação estrita). Esta é uma das armadilhas mais comuns:
var_dump(0 == "0"); // bool(true)
var_dump(0 === "0"); // bool(false)
POO em PHP: herança, interfaces e traits
O que são traits e para que servem?
Traits são um mecanismo de reutilização de código em PHP que resolve o problema da herança simples. Um trait não pode ser instanciado, mas pode ser incorporado a uma classe usando use:
trait Logger {
public function log($message) {
echo "[LOG]: $message";
}
}
class User {
use Logger;
}
$user = new User();
$user->log("Usuário criado");
Qual a diferença entre classe abstrata e interface?
- Classe abstrata pode conter implementação de métodos e propriedades. É herdada através de
extends. - Interface define apenas as assinaturas dos métodos (sem implementação). Uma classe pode implementar várias interfaces através de
implements.
interface CanFly {
public function fly();
}
abstract class Bird {
abstract public function sound();
public function eat() {
echo "Come grão";
}
}
class Eagle extends Bird implements CanFly {
public function sound() { echo "Grito"; }
public function fly() { echo "Voa"; }
}
Trabalho com bancos de dados e PDO
O que é PDO e por que é usado?
PDO (PHP Data Objects) é uma extensão para trabalhar com bancos de dados que fornece uma interface unificada para diferentes SGBDs (MySQL, PostgreSQL, SQLite, etc.). A principal vantagem é a proteção contra injeção de SQL através de consultas preparadas:
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');
$stmt->execute([':email' => 'user@example.com']);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
Como tratar erros no PDO?
A melhor prática é configurar o PDO para o modo de exceções:
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
$pdo->exec("INSERT INTO users (name) VALUES ('John')");
} catch (PDOException $e) {
echo "Erro: " . $e->getMessage();
}
Segurança e vulnerabilidades comuns
Como proteger a aplicação contra XSS e injeção de SQL?
Na entrevista, é importante demonstrar compreensão não apenas da teoria, mas também das medidas práticas:
- Injeção de SQL: use PDO com consultas preparadas (veja exemplo acima).