Хорошо, я немного пошатнул код ... Я не уверен, что то, что я пытаюсь выполнить, возможно или нет.При использовании include внутри функции, как мне получить доступ к переменной, объявленной перед включением?
У меня есть класс, называемый пример с функцией под названием Шаблон, который имеет 1 параметр
Class Example{
public function Template($root){
include ROOT."/templates/{$root}.php";
}
}
У меня есть множество продуктов, я экземпляр этого класса и запустить функцию шаблона
$products = array("garbage");
$test = new Example;
$test->Template("product");
Здесь является примером копии /templates/product.php
print 'Test';
print_r($products);
Я возвращаюсь страницу, на которой отображается «Тест», но я не могу получить доступ к массиву $products
, который был определен до функции Template.
Если я иду по прямому маршруту include ROOT."/templates/product.php";
, все работает.
Я не могу использовать функцию внутри функции?
Это нет. Это массив (или его следует считать) Исправлено – FuckYou
Не проблема, и вы не поняли вопрос, потому что, если бы я заявил, что могу получить результат с помощью прямого включения , очевидно, массив является массивом и просто помещен здесь как держатель, как если бы он уже был определен. Во всяком случае, спасибо. Я обновил это – FuckYou
«Правильный» ответ: передать массив в класс через конструктор ... но глобальные $ products; в верхней части файла, в котором вы используете $ products, будет работать ... ОДНАКО это очень сильно неодобрительно, и я ненавижу себя за предложение! – Brian