هل يمكنني الحصول على مسار ملف PHP الذي تم استدعاؤه في الأصل داخل ملف مضمن؟
سؤال
لنفترض أن لدينا index.php
ويتم تخزينه في /home/user/public/www
و index.php
يدعو الفصل Foo->bar()
من الملف inc/app/Foo.class.php
.
أرغب في وظيفة الشريط في Foo
الطبقة للحصول على عقد من المسار /home/user/public/www
في هذه الحالة - لا أريد استخدام متغير عام، أو تمرير متغير، وما إلى ذلك.
المحلول
ألن يمنحك هذا دليل البرنامج النصي الجاري تشغيله بسهولة أكبر؟
$dir=dirname($_SERVER["SCRIPT_FILENAME"])
نصائح أخرى
يمكنك استخدام debug_backtrace لإلقاء نظرة على مسار الاستدعاء والحصول على الملف الذي يستدعي هذه الوظيفة.
مثال قصير:
class Foo {
function bar() {
$trace = debug_backtrace();
echo "calling file was ".$trace[0]['file']."\n";
}
}
getcwd()
يحصل على دليل العمل الحالي
يمكن تغييره لعدة أسباب من خلال وحدات طرف ثالث أو يتضمن أو حتى التعليمات البرمجية الخاصة بك عن طريق إصدار chdir()
.
debug_backtrace()
كما اقترح ديفون هو الجواب الذي تبحث عنه.
وجدته.getcwd().
لا تنتمي إلى StackOverflow