@mond_bond

Проблема: не видна переменная?

Допустим есть такое
файл CategoriesModel.php

$bb = "var work";
function t(){
echo "function work";
}

Инклудим этот файл в файл IndexController.php

include "../model/CategoriesModel.php"; // путь правильный.

function indexAction($smarty){
echo $bb;
t();
}
//// выводит только "function work"
т.е. функцию видно, а переменную нет. Причем такая магия только с файлом IndexController.php
при желании вывести ошибку, ясень пень, покажет Notice: Undefined variable bb

Помогите понять и исправить.

/ если дописать в внутри global - ошибка пропадет, но в итоге ее все равно не выведет.
/ выяснилось что проблема не из-за include. созданная в этом же файле переменная тоже не работает
/ если пропустить ее через var_dump то покажет null
  • Вопрос задан
  • 214 просмотров
Решения вопроса 1
@crazyhat
Web разработчик
А не вариант в CategoriesModel.php создать класс:
class CategoriesModel {
	private $bb = "var work";

	function returnBb()
	{
		return $this->bb;
	}
	function t()
	{
		echo "function work";
	}
}

Заинклюдить его и вызвать внутри функции

function indexAction($smarty){
	$catModel = new CategoriesModel;
	echo $catModel->returnBb();
	$catModel->t();
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
miraage
@miraage
Старый прогер
Ибо переменная находится в глобальном контексте.
Попробуйте в начале функции indexAction написать global $bb.
И, в любом раскладе, это очень плохая практика.
Ответ написан
если переменную передать в функцию типа вот так ?
<?php

$bb = "var work";
function t(){
echo "function work";
}

function indexAction($smarty){

echo $smarty;
t();
}
indexAction($bb);

?>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы