(число внутри скобки () - это «ссылка» на код, который написан ниже)
prototype
- объект, который состоит из: => функции (3) этого конкретного ConstructorFunction.prototype
(5), которые доступны каждому объекту (4), созданному или создаваемому через эту конструкторскую функцию (1) => сама конструкторская функция (1) => __proto__
этого объекта (объект-прототип)
__proto__
(dandor proto?) - ссылка МЕЖДУ любым объектом (2), созданным через конкретную конструкторскую функцию (1), и свойства объекта прототипа (5) этого конструктора THAT позволяет каждому созданному объекту (2) иметь доступ к функциям и методам прототипа (4) (__proto__
по умолчанию включен в каждый отдельный объект в JS)
1.
function Person (name, age) {
this.name = name;
this.age = age;
}
2.
var John = new Person(‘John’, 37);
// John is an object
3.
Person.prototype.getOlder = function() {
this.age++;
}
// getOlder is a key that has a value of the function
4.
John.getOlder();
5.
Person.prototype;
Вы также можете сделать это в самом PHP:
$reflFunc = new ReflectionFunction('function_name');
print $reflFunc->getFileName() . ':' . $reflFunc->getStartLine();
Я предполагаю, что под «описанием» вы подразумеваете «определенный». Для этого вам в идеале нужна достойная IDE, которая может это сделать.
Либо используйте среду IDE, которая позволяет это сделать (я бы рекомендовал Eclipse PDT), либо вы можете grep ее, если в Linux, или с помощью wingrep. В Linux это будет что-то вроде:
grep -R "function funName" *
из корневой папки проекта.
Мне нравится решение Тома, поэтому я подумал, что могу поделиться еще несколькими трюками с ReflectionFunction (он должен работать на каждом PHP 5):
print (new ReflectionFunction("foo"))->getFileName();
Обратите внимание, что он не покажет вам местоположение функций internal (таких как _ ]), но он по-прежнему может печатать API для него, как показано ниже.
print new ReflectionFunction("foo");
Пример: $ php -r 'print new ReflectionFunction("_");'
Function [ <internal:gettext> function _ ] {
- Parameters [1] {
Parameter #0 [ <required> $msgid ]
}
}
Heres - основная функция, которая будет проверять ваши файлы всего проекта за определенную строку и сообщать вам, в каком файле она находится, и какую позицию char она начинается с использования только базового php. Надеюсь, это поможет кому-то ...
<?php
$find="somefunction()";
echo findString('./ProjectFolderOrPath/',$find);
function findString($path,$find){
$return='';
ob_start();
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if(is_dir($path.'/'.$file)){
$sub=findString($path.'/'.$file,$find);
if(isset($sub)){
echo $sub.PHP_EOL;
}
}else{
$ext=substr(strtolower($file),-3);
if($ext=='php'){
$filesource=file_get_contents($path.'/'.$file);
$pos = strpos($filesource, $find);
if ($pos === false) {
continue;
} else {
echo "The string '$find' was found in the file '$path/$file and exists at position $pos<br />";
}
}else{
continue;
}
}
}
}
closedir($handle);
}
$return = ob_get_contents();
ob_end_clean();
return $return;
}
?>
Если вы используете IDE, например Netbeans, вы можете CTRL + щелкнуть по использованию функции, и он перенесет вас туда, где он определен, если файл находится в папке проекта, которую вы определили.
Нет кода или функции для этого.
Вам понадобится среда IDE, которая поддерживает функциональность «Open Function Declaration». Для php полезно использовать Eclipse PDT.
Чтобы найти определение функции, выделите имя функции, нажмите CTRL + Нажмите на имя.
еще один способ проверить, где определена функция, попытаться переопределить функцию, система ошибок PHP просто вернет ошибку, сообщив вам, где ранее определенная функция
$reflFunc->isInternal() === TRUE
означает - & gt; getFileName () и - & gt; getStartLine () вернет FALSE. – Bob Stein 5 July 2013 в 18:11$reflFunc = new ReflectionMethod($this, 'method_name');
– Ladislav Gallay 24 August 2014 в 10:12