Làm cách nào để tìm ra tệp và dòng nào đã được xác định?Làm thế nào để tìm ra một hàm được định nghĩa ở đâu?
Trả lời
Bạn cũng có thể làm điều này trong PHP bản thân:
$reflFunc = new ReflectionFunction('function_name');
print $reflFunc->getFileName() . ':' . $reflFunc->getStartLine();
Tôi giả định rằng theo "được mô tả", bạn có nghĩa là "đã xác định". Đối với điều này, bạn lý tưởng cần một IDE phong nha mà có thể làm điều đó.
Tôi đang sử dụng Aptana có tìm kiếm văn bản thông qua dự án. Nhưng để sử dụng nó tôi cần phải nhập trang web lỗ (rất lớn) như là một dự án. – SaltLake
Nếu bạn sử dụng IDE như Netbeans, bạn có thể CTRL + Nhấp vào chức năng sử dụng và nó sẽ đưa bạn đến nơi nó được xác định, giả định tệp nằm trong thư mục dự án bạn đã xác định.
Không có mã hoặc chức năng nào để thực hiện việc này.
Hoặc sử dụng một IDE cho phép làm như vậy (tôi sẽ giới thiệu Eclipse PDT), hoặc bạn có thể allways grep nó nếu trên Linux, hoặc sử dụng wingrep. Trong Linux, nó sẽ giống như sau:
grep -R "function funName" *
từ bên trong thư mục gốc của dự án.
tốt hơn để có: grep -R "function \ sfunName" * – David
Bạn sẽ cần một IDE hỗ trợ chức năng "Tuyên bố chức năng mở". Một điều tốt cho php là Eclipse PDT.
Để tìm định nghĩa hàm, hãy chọn tên hàm, giữ CTRL + Nhấp vào tên.
Heres một chức năng cơ bản mà sẽ quét toàn bộ hồ sơ dự án của bạn cho một chuỗi cụ thể và cho bạn biết tập tin đó là, những thứ char vị trí của nó bắt đầu chỉ sử dụng php cơ bản. Hy vọng điều này sẽ giúp người ...
<?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;
}
?>
sử dụng 'grep' thay thế! –
Tôi thích giải pháp của Tom, vì vậy tôi nghĩ tôi có thể chia sẻ thêm một chút thủ đoạn với ReflectionFunction (nó sẽ hoạt động trên tất cả các PHP 5):
một -liner để in filename:
print (new ReflectionFunction("foo"))->getFileName();
Xin lưu ý rằng nó sẽ không hiển thị cho bạn những vị trí fo r internal chức năng (chẳng hạn như _), nhưng nó vẫn có thể in API cho nó như dưới đây.
để in các định nghĩa và các thông số của hàm:
print new ReflectionFunction("foo");
Ví dụ:
$ php -r 'print new ReflectionFunction("_");' Function [ <internal:gettext> function _ ] { - Parameters [1] { Parameter #0 [ <required> $msgid ] } }
một cách khác để kiểm tra nơi nào để chức năng xác định, cố gắng xác định lại chức năng, hệ thống lỗi PHP sẽ trả về một lỗi đơn giản cho bạn biết vị trí được định nghĩa trước đây
- 1. Định nghĩa chữ "id" ở đâu?
- 2. Ở đâu là C++ size_t được định nghĩa trong linux
- 3. Từ khóa được định nghĩa trong Ruby ở đâu?
- 4. Trong Ruby có cách nào để biết được phương thức được định nghĩa ở đâu?
- 5. Làm thế nào và ở đâu py.test tìm đồ đạc
- 6. Định nghĩa `struct ap_conf_vector_t` ở đâu?
- 7. jQuery.ajax được định nghĩa trong mã nguồn jQuery ở đâu?
- 8. NSConcreteData là gì và nó được định nghĩa ở đâu?
- 9. node.js internals: Làm thế nào tôi có thể tìm ra nơi `process.binding ('eval')` được định nghĩa?
- 10. "Dao cạo Hutton" đầu tiên được định nghĩa ở đâu?
- 11. Macro DEBUG được xác định ở đâu?
- 12. TSQL Làm thế nào để bạn xuất ra PRINT trong một hàm do người dùng định nghĩa?
- 13. C/C++: Làm thế nào để tìm ra chuỗi các tệp tiêu đề cho một định nghĩa đã cho?
- 14. Cách tìm ra các hàm nào KHÔNG được gạch chân
- 15. Làm thế nào để giả lập một hàm được định nghĩa trong một mô đun của một gói?
- 16. Làm thế nào để gọi trên một hàm được tìm thấy trên một tệp khác?
- 17. Làm thế nào để biết được từ khóa AS nên được sử dụng ở đâu?
- 18. Làm thế nào để biết nếu __uint128_t được định nghĩa
- 19. Làm thế nào để thoát ra khỏi một hàm
- 20. Làm thế nào để làm cho gdb chạy một hàm do người dùng định nghĩa (được định nghĩa trong .gdbinit) mỗi khi nó bắt đầu?
- 21. làm thế nào để in ra định nghĩa của một thủ tục trong Oracle?
- 22. Làm thế nào để spy ++ tìm ra cửa sổ ở một điểm nhất định trên màn hình là gì?
- 23. Làm thế nào để tìm ra các ký tự được định nghĩa là chữ và số cho một miền địa phương cho
- 24. Định nghĩa hàm bên trong một định nghĩa hàm khác: nó có hợp lệ không?
- 25. Cách tìm biến môi trường được đặt ở đâu
- 26. Làm thế nào để gọi một hàm được định nghĩa trong exe của tôi bên trong DLL của tôi?
- 27. Giá trị Enum.values () được xác định ở đâu?
- 28. Làm thế nào để tôi tìm được một hằng số được xác định trong Ruby?
- 29. Enum của Java ... Chúng được tạo ra ở đâu?
- 30. Microsoft.Deployment.WindowsInstaller tìm thấy ở đâu?
+1 để giải quyết điều này với PHP thay vì IDE. Ý kiến hay. – Gordon
Mẹo: '$ reflFunc-> isInternal() === TRUE' có nghĩa là -> getFileName() và -> getStartLine() sẽ trả về FALSE. –
tính năng này không hoạt động đối với tôi – Ash