Intereting Posts
Удалите все элементы массива, которые не соответствуют определенному условию mysql_connect: php_network_getaddresses: getaddrinfo не удалось: такой хост не известен, используя значения файлов PHP: массив для значений переменных переменной функции Как отправить данные с JavaScript на PHP и наоборот? Отключить отчет об ошибках полностью в производстве Laravel? Попытка получить свойство не объекта – CodeIgniter Конкретная папка для каждого пользователя php Как я могу получить флаг страны на моем сайте регенерирующий идентификатор сеанса ODBC DERBY DRIVER для PHP access_token – Скрипт для загрузки фотографии в альбомную страницу Проблемы с вставкой данных с использованием «безопасного способа ввода данных в mysql с помощью PHP» Одиночные кавычки или двойные кавычки для переменной конкатенации? Расшифровка зашифрованного текста в PHP MySQL Полнотекстовый поиск – поиск коротких слов

PHP-доступ к внешнему $ var изнутри функции класса

В PHP, как вы используете внешний $ var для использования внутри функции в классе? Например, скажем, $ some_external_var устанавливает значение true, и у вас есть что-то вроде

 class myclass {
 бла ....
 бла ....

 функция myfunction () {

   if (isset ($ some_external_var)) что-то делать ...

    } 

 }


 $ some_external_var = true;

 $ obj = new myclass ();
 $ Obj-> MyFunction ();

благодаря

Global $some_external_var;

 функция myfunction () {
   Глобальный $ some_external_var;
   if (! empty ($ some_external_var)) что-то делать ...

    } 

 }

Но поскольку Global автоматически устанавливает его, проверьте, не является ли он пустым.

Вам нужно будет использовать global ключевое слово внутри вашей функции, чтобы ваша внешняя переменная была видимой для этой функции.

Например :

 $my_var_2 = 'glop'; function test_2() { global $my_var_2; var_dump($my_var_2); // string 'glop' (length=4) } test_2(); 

Вы также можете использовать массив $GLOBALS , который всегда отображается, даже внутри функций.

Но, как правило, не рекомендуется использовать глобальные переменные: ваши классы не должны зависеть от какого-то внешнего материала, который может быть или не быть там!

Лучший способ – передать переменные, которые вам нужны в качестве параметров, либо самим методам, либо конструктору класса …

это плохой дизайн программного обеспечения. Для того, чтобы класс функционировал, он должен быть снабжен данными. Итак, передайте этот внешний var в свой класс, иначе вы создадите ненужные зависимости.

Почему бы вам просто не передать эту переменную во время __construct () и сделать то, что объект делает во время строительства, в зависимости от значения истины этой переменной?

Используйте Setters и Getters или, возможно, централизованную конфигурацию, например:

 function config() { static $data; if(!isset($data)) { $data = new stdClass(); } return $data; } class myClass { public function myFunction() { echo "config()->myConfigVar: " . config()->myConfigVar; } } 

и использовать его:

 config()->myConfigVar = "Hello world"; $myClass = new myClass(); $myClass->myFunction(); 

http://www.evanbot.com/article/universally-accessible-data-php/24