Como posso saber em qual arquivo e linha uma determinada função foi definida?
109
Você também pode fazer isso no próprio PHP:
$reflFunc = new ReflectionFunction('function_name');
print $reflFunc->getFileName() . ':' . $reflFunc->getStartLine();
$reflFunc->isInternal() === TRUE
significa -> getFileName () e -> getStartLine () retornará FALSE.$reflFunc = new ReflectionMethod($this, 'method_name');
Use um IDE que permita isso (eu recomendo o Eclipse PDT), ou você pode sempre fazer o grep se estiver no Linux, ou usando o wingrep. No Linux, seria algo como:
de dentro da pasta raiz do projeto.
fonte
Se você usar um IDE como o Netbeans, poderá CTRL + Clique na função usar e ela o levará para onde está definida, assumindo que o arquivo está dentro da pasta do projeto que você definiu.
No entanto, não há código ou função para fazer isso.
fonte
Presumo que por "descrito" você quer dizer "definido". Para isso, você precisa idealmente de um IDE decente que possa fazer isso.
fonte
Aqui está uma função básica que irá escanear seus arquivos de projeto inteiros para uma string específica e dizer a você em qual arquivo ele está e em qual posição de caractere ele começa usando apenas php básico. Espero que isso ajude alguém ...
fonte
outra forma de verificar onde está a função definida, tente redefinir a função, o sistema de erro do PHP simplesmente retornará um erro informando onde está a função definida anteriormente
fonte
Gosto da solução de Tom, então pensei que poderia compartilhar um pouco mais de truques com ReflectionFunction (ele deve funcionar em todos os PHP 5):
one-liner para imprimir o nome do arquivo:
Observe que ele não mostrará a localização das funções internas (como _ ), mas ainda pode imprimir a API para ele conforme abaixo.
para imprimir a definição e os parâmetros da função:
Exemplo:
fonte
Você precisará de um IDE que ofereça suporte à funcionalidade "Declaração de função aberta". Um bom para php é Eclipse PDT.
Para procurar a definição da função, realce o nome da função, segure CTRL + Clique no nome.
fonte