PHP включает в себя файл, который включает в себя странную проблему файла!

Я сталкиваюсь со странной проблемой, включая файлы php. Позвольте мне показать вам код:

// constants.php
$MYSQL_HOST_PORT = 'localhost:3306';

// functions.php
include 'constants.php';
function getVar()  {
    echo $MYSQL_HOST_PORT;
}

// doSth.php
include 'functions.php';
echo $MYSQL_HOST_PORT; // The variable is visible and echoed normally as expected!
echo getVar(); // The variable is not echoed! its "".

Есть идеи?

3 ответа

Решение

Для одного echo в echo getVar(); никогда ничего не печатать, потому что getVar не возвращает значение.

Во-вторых, если вы (по какой-то причине) хотите getVar() сам для корректной работы нужно добавить global $MYSQL_HOST_PORT; линия, чтобы она выглядела $MYSQL_HOST_PORT в глобальном масштабе.

Вместо того, чтобы глобализировать $MYSQL_HOST_PORT переменная, почему бы просто не сделать ее постоянной?

// constants.php
define('MYSQL_HOST_PORT', 'localhost:3306');

Предоставлена constants.php включен, вы можете сослаться на MYSQL_HOST_PORT постоянно где угодно.

Как указано в ответе Zerocrate, вопрос является ограничительным. Прилагаемый объем getVar() функция не включает $MYSQL_HOST_PORT,

Одна вещь, которую я вижу неправильно, это то, что с линией echo getVar(); вы не получаете возвращаемое значение из функции, поэтому вы можете просто написать getVar(); само собой.

Другие вопросы по тегам