Bằng cách nào đó có thể lấy vị trí của tệp PHP, được đánh giá khi chạy không? Tôi đang tìm kiếm một cái gì đó tương tự như hằng số ma thuật __DIR__
, nhưng được đánh giá ở thời gian chạy, như là một ràng buộc muộn. chênh lệch tương tự với self
và static
:PHP __DIR__ được đánh giá thời gian chạy (ràng buộc muộn)?
__DIR__ ~ self
??? ~ static
Mục tiêu của tôi là xác định một phương pháp trong một lớp trừu tượng, sử dụng __DIR__
đó sẽ được đánh giá tương ứng cho mỗi lớp người thừa kế. Ví dụ:
abstract class Parent {
protected function getDir() {
// return __DIR__; // does not work
return <<I need this>>; //
}
}
class Heir extends Parent {
public function doSomething() {
$heirDirectory = $this->getDir();
doStuff($heirDirectory);
}
}
Rõ ràng, vấn đề này chỉ xảy ra nếu Parent
và Heir
là trong các thư mục khác nhau. Xin vui lòng, đưa vào tài khoản này. Ngoài ra, việc xác định getDir
hơn và hơn nữa trong các lớp thừa kế khác nhau dường như không thể và lựa chọn, đó là lý do tại sao chúng tôi có thừa kế ...
Điều này thật tuyệt ... Bất kỳ điều gì khác, mọi người? Các thiết kế sạch càng tốt. –
Bạn cũng có thể sử dụng ReflectionObject: 'return dirname (new \ ReflectionObject ($ this)) -> getFileName());' –