Использую ооп.
Есть такой класс
class Users extends BaseController{
public function getUser( $u_id ){
$this->a = 12;
$a = 13;
if( !$u_id ){
return $this->getPage404();// 33 строка
}
}
Функция getPage404();
class BaseController{
public function getPage404( $u_id ){
include '/404.php';
}
}
Вот когда я пытаюсь подключить файл если некорректный ид юзера
return $this->getPage404();
Я в файле 404.php пытаюсь вывести
echo $a;// NULL
echo $this->a;// 12
Но, если я подключаю файл на 33й строке не через функцию, а напрямую через include:
if( !$u_id ){
return include '/404.php';// 33 строка
}
В таком случае, в файле 404.php у меня выводит нормально все
echo $a;// 13
echo $this->a;// 12
Вопрос. При подключении через функцию "getPage404", у меня получается для файла 404.php область видимости метода getPage404?
Вы возвращаете функцию return $this->getPage404();
А на прямую вы возвращаете содержимое файла return $this->getPage404();
public function getPage404( $u_id ){
return include '/404.php';
}
Понял в чем беда. Из документации
Когда файл включается, его код наследует ту же область видимости переменых, что и строка, на которой произошло включение.
На момент подключения файла, в функции нет переменной $a, так как эта переменная была объявлена в другой функции.
2 варианта решения
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте! Пишу небольшое приложение на Qt для андроидИ интересно стало, как присылать пользователю уведомления? Например: "Уже 8 часов...