Передача переменных во включенный файл - PullRequest
0 голосов
/ 03 августа 2011

У меня есть шаблон класса, который выглядит так:

class Template{
public $pageTitle = "";
public function __construct($pageTitle){
    $this->pageTitle = $pageTitle;
}

public function display(){
    include "/includes/head.php";
    include "/includes/body.php";
}
}

Теперь я привык к работе Java, но я не понимаю, почему я получаю ошибку неопределенной переменной ($ pageTitle). Включенные файлы должны иметь доступ к этой переменной. Я знаю, что это будет очень просто, но я на самом деле не понял, почему. Что мне нужно сделать, чтобы включенные пользователи могли видеть эту переменную?

Ответы [ 4 ]

5 голосов
/ 03 августа 2011

Включения также должны будут использовать $this->pageTitle. Фактически include делает их частью тела метода.

3 голосов
/ 03 августа 2011

Включенный файл находится в той же области, что и ваш объект. Так что вам нужно позвонить:

$this->pageTitle
1 голос
/ 03 августа 2011

Если вы не хотите делать все $ this -> , вы можете сделать что-то вроде следующего ... Функция extract извлечет массив $ this-> data в переменные с именамив соответствии с ключом / индексом каждого элемента.Так что теперь вы сможете делать echo $ pageTitle;

class Template{
   public $data = Array();

   public function __construct($pageTitle){
        $this->data['pageTitle'] = $pageTitle;
   }

   public function display(){
        extract($this->data);
        include "/includes/head.php";
        include "/includes/body.php";
   }
}
0 голосов
/ 03 августа 2011

Область применения в PHP немного отличается от Java.Для вашего конкретного случая вам нужно

$this->pageTitle

Чтобы получить доступ к переменной, объявленной вне класса, вам нужно сделать ее глобальной

global $myVar;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...