Допустим, у нас есть index.php, и он хранится в /home/user/public/www, а index.php вызывает класс Foo->bar() из файла inc/app/Foo.class.php.
index.php
/home/user/public/www
Foo->bar()
inc/app/Foo.class.php
Мне бы хотелось, чтобы функция bar в классе Foo в этом случае получила путь /home/user/public/www - я не хочу использовать глобальную переменную, передавать переменную и т. Д.
Foo
Вы можете использовать debug_backtrace , чтобы посмотреть путь вызова и получить файл, вызывающий эту функцию.
Краткий пример:
class Foo { function bar() { $trace = debug_backtrace(); echo "calling file was ".$trace[0]['file']."\n"; } }
Разве это не даст вам каталог с запущенным скриптом?
$dir=dirname($_SERVER["SCRIPT_FILENAME"])
getcwd() получает текущий рабочий каталог
getcwd()
Он может быть изменен по разным причинам сторонними модулями, включая или даже ваш собственный код, путем выдачи chdir().
chdir()
debug_backtrace(), как предложила Девон, - это ответ, который вы ищете.
debug_backtrace()
Нашел это. getcwd ().