Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

612
Visualizações
Al usar PHP7, ¿es necesario documentar los métodos con PHPDoc?

En PHP7, cuando un método establece un tipo de parámetro y tipo de resultado dado, ¿es necesario documentarlos nuevamente en el PHPDoc?

Ya que

 function foo(string $text): bool { return true; }

Es equivalente a

 /** * @param string $text * @return bool */ function foo($text) { return true; }

¿Es necesario duplicar estas informaciones?

 /** * @param string $text * @return bool */ function foo(string $text): bool { return true; }

Editar: no uso PHPDoc para generar la documentación de mi código, sino para mantener la coherencia en los métodos para mí y mis compañeros de trabajo con la ayuda de PHPStorm.

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

El docblock es algo que un codificador puede usar para explicar lo que hace una función, será ignorado por el analizador de PHP (ver Editar a continuación), ya que es solo un comentario, es una buena práctica colocar un docblock encima de cada función y método, porque cuando alguien (o usted) lee el código, es más fácil ver lo que hace la función.

Un IDE generalmente usa el docblock para autocompletar, sin embargo, el docblock será anulado por la string y :bool cuando el bloque no coincida con el código.

Sin embargo

 function foo(string $text): bool { return true; }

NO es equivalente a

 /** * @param string $text * @return bool */ function foo($text) { return true; }

El :bool en el primer ejemplo impone que foo() devuelva true o false , cualquier otra cosa y PHP intentará convertir el retorno a ese tipo o arrojar un error fatal. Es lo mismo con la string typehint para $text . El primer parámetro debe ser un valor de tipo cadena; de lo contrario, PHP intenta convertirlo en una cadena o se generará un error fatal.

La cadena @return bool y @param string no impone nada en absoluto, solo dice que el retorno esperado es true o false

Tome el siguiente ejemplo:

 function foo(string $a) :bool { var_dump($a); // string '10' return "string"; } var_dump(foo(10)); // bool true

No hay problemas allí, PHP puede convertir 10 en una cadena y "string" es true . Sin embargo, hay un problema con lo siguiente

 function foo(PDO $a) :bool { var_dump($a); return "string"; } var_dump(foo(10)); // fatal error, 10 is not PDO and can not be cast to PDO

El uso del docblock hará que el último funcione (probablemente se encuentre con otros problemas más adelante porque probablemente esté tratando de hacer algo con un objeto PDO)

Nota: PHP aún no tiene soporte para tipos mixtos (es decir, cadena | matriz) que aún debe realizarse especificándolo en un docblock

EDITAR:
Como @inwerpsel señaló en los comentarios, mi afirmación de que el analizador de PHP ignora un docblock es incorrecta. ReflectionClass puede leer un docblock durante el tiempo de ejecución.

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda