PHP включает файл, который включает в себя странную проблему файла! - PullRequest
0 голосов
/ 11 апреля 2011

Я сталкиваюсь со странной проблемой, включая файлы 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 ]

1 голос
/ 11 апреля 2011

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

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

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

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

1 голос
/ 11 апреля 2011

С одной стороны, echo в echo getVar(); никогда не будет ничего печатать, потому что getVar не возвращает значение.

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

0 голосов
/ 11 апреля 2011

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

...