Bạn sẽ không có nhiều tùy chọn ở đó. Các tùy chọn khác (mà đã được đăng trong câu hỏi khác) để buộc người gọi để provde đó là thông tin với các cuộc gọi chức năng (sử dụng PHP hằng ma thuật):
callFunction(1, 2, 3, __FUNCTION__)
callFunction(1, 2, 3, __CLASS__, __METHOD__)
callFunction(1, 2, 3, $this, __METHOD__)
or
$class = new ReflectionClass(__CLASS__);
$method = $class->getMethod(__METHOD__);
callFunction(1, 2, 3, $method) // $method would be a ReflectionMethod obj
sẽ là một lựa chọn tốt. Nhưng nó
- Obfuscating mã của bạn
- có thể được "chế tác", mà có thể gây ra các quy tắc ứng
callFunction
thất bại và nó sẽ là khá khó khăn để theo dõi những lỗi xuống.
Nếu tôi ở vị trí của bạn, tôi sẽ cố gắng tránh nó trong một chức năng được sử dụng trong suốt mã của bạn. sử dụng debug_backtrace
(ngay cả khi nó có thể là 'chậm'). Mã có thể đọc được thắng trên mã nhanh.
Nguồn
2009-04-13 12:12:48
Tại sao bạn cần phải biết từ đâu chức năng hiện nay đã được gọi là? Khi câu hỏi được liên kết tuyên bố, bạn nên suy nghĩ lại về thiết kế của mình nếu các chức năng của bạn thực sự cần phải biết ai đã gọi chúng. – Gumbo
tôi có một lớp xem và không muốn chỉ định toàn bộ đường dẫn của chế độ xem ... nhưng chỉ có tên và kết quả trong chế độ xem nằm trong cùng thư mục với chế độ xem được gọi là lớp. –
Có vẻ như bạn chuẩn bị bắn chân. Đừng làm thế. – troelskn