Используйте определение константы в другом файле - PullRequest
1 голос
/ 16 марта 2012

У меня есть небольшой фрагмент кода, который был написан в предыдущей версии PHP (не 5.3), и я нахожу странным, что интерпретатор перехватывает перекрестное использование константы в качестве сообщения уведомления, а затем, наконец, исправляет фатальную ошибку, когда константа определяется в файле, отличном от того, о котором сообщается в уведомлении. То есть, например, я определяю свою константу в файле A, который инициализируется при запуске программы

define('SOME_CONSTANT','something');

и в файле B.php

require_once('A.php');
Call-function-that-uses-fileA's-SOME_CONSTANT

Файл B сообщается с уведомлением и фатальной ошибкой.

Фатальная ошибка может быть грубо описана как

require_once () [function.require]: сбой при открытии необходим ....

, в которой "...." обозначает длинную строку включенных путей, которые могут или не могут быть связаны с текущим файлом B вообще. Я благодарен за любую помощь или совет, который вы предлагаете.

Это вызвано тем, что я использовал новую версию PHP, когда мой код был написан в старой? Как я могу исправить эти сообщения без переустановки PHP?

Редактировать

Единственная причина, по которой я не хотел бы переустанавливать PHP, заключается в том, что я не хочу всегда менять PHP, когда мне нужно работать с новым проектом. Теперь он может быть старым, что если позже мне потребуется использовать последнюю версию, повторно загрузить новую и удалить старую psss?

Ответы [ 3 ]

2 голосов
/ 11 мая 2012

Я знаю, что это был и старый вопрос, но в случае, если кто-то наткнется на него ...

К сожалению, звонок require_once('A.php'); ищет a.php файл в том же каталоге, что и файл B.php.Если вы хотите включить файл A.php, вам нужно указать ему полный путь к файлу каталога ИЛИ изменить строку include_path файла php.ini для включения родительского каталога A.php.

Если вы не хотите вносить изменения в файл php.ini, просто введите полный путь к файлу.

@ Binaek: Волшебная переменная __DIR__ будет просто возвращать полный путь, по которому находится B.php, который не будет работать, поскольку файл a.php, по-видимому, не находится в этом каталоге, иначе require_once будет работать как есть.

0 голосов
/ 26 июня 2015

Вы должны определить константу в желаемом файле, например:

define("APPLICATION_NAME","my app");

затем используйте в других файлах, как это:

include_once 'yourfile_with_constant_value';
$value = APPLICATION_NAME;

пожалуйста, будьте осторожны, чтобы определить константу с заглавным словом.

0 голосов
/ 24 марта 2012
require_once(__DIR___.'/A.php');

__DIR__ дает текущий каталог исполняемого файла.

...