Seu colega de trabalho está realmente tentando aplicar design by contract (DbC) da linguagem Eiffel e baseado no livro: Object Oriented Software Construction, 2nd Edition.
A afirmação, como ele a usou, seria a parte {P} da lógica de Hoare ou triplo de Hoare: {P} C {Q}, onde {P} é a afirmação de pré-condição (íons) e {Q} são a afirmação (íon) de pós-condição.
Eu tomaria nota crítica dos conselhos dados sobre o recurso assert no PHP com bugs. Você não quer usar código com bugs. O que você realmente quer são os criadores de PHP para consertar o bug no assert. Até que o façam, você pode usar o assert, mas use-o ciente de seu estado atual de erros.
Além disso, se o recurso assert tiver erros, sugiro que você não o use no código de produção. No entanto, eu recomendo que você o use no desenvolvimento e teste de código quando apropriado.
Finalmente - se você fizer um estudo de design por contrato, descobrirá que há consequências em usar asserções booleanas à luz da herança clássica orientada a objetos - isto é - você nunca deve enfraquecer uma pré-condição, nem enfraquecer uma pós-condição. Fazer isso pode ser perigoso para seus objetos descendentes polimórficos interagindo uns com os outros. Até você entender o que isso significa - eu deixaria isso pra lá!
Além disso, eu recomendo fortemente que os criadores do PHP façam um estudo abrangente de design por contrato e tentem colocá-lo no PHP o mais rápido possível! Então, todos nós podemos nos beneficiar de ter um compilador / interpretador compatível com DbC, que lidaria com os problemas observados nas respostas (acima):
- Um compilador com reconhecimento de design por contrato devidamente implementado (com sorte) estaria livre de bugs (ao contrário da declaração atual do PHP).
- Um compilador com reconhecimento de projeto por contrato implementado de maneira adequada lidaria com as nuances do gerenciamento de lógica de asserção polimórfica para você, em vez de quebrar sua cabeça com o assunto!
NOTA: Até mesmo o uso de uma if
instrução -como um substituto para a afirmação (pré-condição) sofrerá consequências terríveis se usado para fortalecer uma pré-condição ou enfraquecer uma pós-condição. Para entender o que isso significa, você precisará estudar design por contrato para saber! :-)
Feliz estudando e aprendendo.
'isset
(a linha de código comassert
)? Não apenasisset
(sem as aspas simples'
)?