Articles of tipo hinting

typehinting: método deve aceitar qualquer $ arg que seja um object

Eu tenho uma class ‘Coleção’, que possui um método adicional. O método de adição deve apenas aceitar objects. Então este é o comportamento desejado: $x=5;//arbitrary non-object $obj=new Foo; //arbitrary object $collection=new Collection; $collection->add($obj); //should be acceptable arg, no matter the actual class $collection->add($x); //should throw an error because $x is not an object De acordo […]

Você pode sugerir tipos de retorno no PHP 5.2.5?

Eu acho que o ctrl de eclipse + clicando em links pode se beneficiar muito … Edit: Estou usando o eclipse PDT. Edit 2: Estou muito feliz com a solução de colocar docblocks antes de funções (e variables) com uma instrução @return ou @var, acabei de atualizar a documentação do meu aplicativo e agora o […]

Funções variadicas e intuição de tipo em PHP

Rápido: Existe alguma maneira de impor tipos de funções variadic em PHP? Estou assumindo não, no entanto, talvez eu tenha perdido alguma coisa. A partir de agora, estou apenas forçando um único argumento exigido do tipo necessário e iterando para verificar o resto. public function myFunction(MyClass $object){ foreach(func_get_args() as $object){ if(!($object instanceof MyClass)){ // throw […]

PHP: constante como variável na function

Estou tentando usar constante como parâmetro de function, é possível verificar o tipo dessa constante. Exemplo do que eu quero: class ApiError { const INVALID_REQUEST = 200; } class Response { public function status(ApiError $status) { //function code here } } USAR: $response = new Response(); $response->status(ApiError::INVALID_REQUEST); Este cheque de verificação que o status $ […]

Por que o “tradicional” tipo de insinuação não é permitido em PHP?

Acabei de descobrir que o tipo de insinuação é permitido em PHP, mas não para ints, strings, bools ou flutuadores. Por que o PHP não permite o tipo de insinuação para tipos como números inteiros, strings, …?

Ampliando o tipo de insinuação para o PHP

É possível estender o tipo de insinuação com outro documento ou tag no Netbeans? Estou procurando uma maneira de estender o tipo de insinuação com uma tag @scope que permita que os arquivos incluídos ganhem access a um escopo de objects. Exemplo: file: template.php <?php /* @var $this MyObject */ Isso só permitiria o tipo […]

O tipo de retorno PHP insinuação, object OU um booleano?

Então eu sei que posso fazer um tipo de retorno sugerindo no php7. Eu posso fazer uma sugestão de retorno de object com: function getUser($pdo, $username) : User { } onde o Usuário é o object que está sendo retornado. No entanto, se o usuário não for encontrado no SQL, retornar ‘false’ vez de um […]

É possível especificar uma dica de mais de um tipo para um parâmetro?

Existe uma maneira de adicionar mais de um tipo de insinuação para um método? Por exemplo, foo (param) deve receber uma instância de string OR bar OU baz.

Não é possível passar argumento nulo ao usar o tipo de insinuação

O seguinte código: falhou em tempo de execução: PHP Fatal error: Argument 1 passed to foo() must not be null Por que não é permitido passar nulo, assim como outras línguas?

Erro ao passar a string no método com o tipo de insinuação

No código abaixo, eu chamo uma function (acontece de ser um construtor) em que eu tenho um tipo de insinuação. Quando eu executo o código, recebo o seguinte erro: Erro fatal colectável : o argumento 1 passou para Question :: __ buildt () deve ser uma instância de string, string dada, chamada em run.php na […]