У меня есть вопрос относительно области видимости в PHP
Я установил переменную в одном файле. Этот файл создает экземпляр класса, а затем вызывает метод этого класса. Этот метод включает в себя отдельный файл. Мне нужно знать, как можно ссылаться на переменную на первой странице на второй странице, не передавая ее в качестве переменной конструктора классу.
Например:
page_1.php
<?php
$variable = "my variable";
$myClass = new MyClass();
$myClass->loadPage();
?>
MyClass.php
<?php
Class MyClass
{
public function loadPage ()
{
include_once('page_2.php');
}
}
?>
page_2.php
<?php
echo $variable;
?>
Я слышал, что использование глобальной области видимости вызывает недовольство, и я уверен, что неправильно помещать переменную в качестве полей в классе, особенно учитывая, что в файле file_1.php, вероятно, будет несколько не связанных переменных, которые должны быть упомянутым в page_2.php. Так что мне нужно сделать?
Спасибо
Передайте переменную в качестве параметра loadPage()
:
$myClass->loadPage($variable);
и обновить определение loadPage()
принять параметр:
public function loadPage ($variable)
Когда вы включаете page_2.php, вы просто вставляете код этого сценария в текущий запущенный сценарий и область видимости. В результате код в page_2.php может просто ссылаться $variable
без дополнительной работы.
Помните, что здесь применяются те же правила области действия, что и в других местах, поэтому, если вы определите класс или вложение в page_2.php, вам придется явно передать переменную $ в эти области, чтобы получить доступ к ее значению.
Других решений пока нет …