![]() |
Ключевое слово use в PHPКаждый раз, когда вам нужно получить доступ к данным, находящимся за пределами функции, вы можете объявить параметр и передать аргумент функции. Но как вы можете получить доступ к переменной вне функции, не используя параметр? Область видимости - это видимость переменной и метода, к которой имеет доступ определенная часть программы. Например, предположим, что мы объявляем переменную внутри функции (регулярную или замкнутую). Другие функции не будут иметь доступа к этой переменной. Эта переменная имеет локальную область действия для функции, в которой она была создана. Переменные могут иметь глобальную область действия и быть доступны в любом месте; эти переменные определяются вне функции. Однако в PHP вызов переменной, имеющей глобальную область действия внутри функции, не сразу допустим, так как функция будет искать локальную переменную. Глобальные переменные должны быть объявлены как глобальные внутри функций, прежде чем их можно будет использовать. Вы можете использовать концепции use и global для получения доступа к глобальной переменной изнутри анонимной функции, но знайте, что use получает значение глобальной переменной при определении функции, а global получит значение переменной при вызове функции. Ключевое слово use можно использовать только с закрытиями, а не с обычными функциями. Прежде чем мы рассмотрим пример, давайте рассмотрим анатомию закрытия с помощью ключевого слова use. <?php $global_variable = "Dino Cajic"; $closure = function() use($global_variable) { echo $global_variable; }; ?>Ключевое слово use появляется сразу после объявления функции() и перед открывающей фигурной скобкой; вы передадите глобальную переменную внутри круглых скобок. Давайте перейдем к примеру. <?php $name = "Dino"; $hello = function() use($name) { echo $name; }; echo $name; // Dino $name = "Harrison"; echo $name; // Harrison $hello(); // Dino ?>
use получает значение глобальной переменной при определении функции, а global получит значение переменной при вызове функции Когда PHP читал программу, он определил функцию в строке 5 и скопировал значение глобальной переменной, чтобы использовать ее. Позже, на 14-й линии, было объявлено о закрытии. Часть определения уже была выполнена, и значение было затвердевшим внутри закрытия. Вот почему вы получаете значение Dino вместо Harrison. Вы, конечно, можете передать глобальную переменную в качестве аргумента, но если вам нужно использовать функцию use, именно так вы это и сделаете. Есть преимущества в том, чтобы делать и то, и другое, как было описано выше. <?php $global_variable = "Dino Cajic"; $closure = function($greeting) use($global_variable) { echo $greeting . " " . $global_variable; }; $closure("Hello there"); ?>Давайте рассмотрим один последний пример, который включает ключевое слово use, глобальное ключевое слово и концепцию параметров. <?php $name1 = "Dino"; $name2 = "Harrison"; $closure = function($greeting) use($name1) { global $name2; echo $greeting . " " . $name1 . " and " . $name2 . "
![]() Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда. ![]() Читайте также:
|
Мои услуги
|
© upread.ru 2013-2022 При перепечатке активная ссылка на сайт обязательна. |