Передача объекта в файл, включенный тем же объектом

#php #class #oop #object #include

#php #класс #ооп #объект #включить

Вопрос:

Я работаю над созданием движка шаблонов PHP. У меня возникает проблема, и я хотел бы получить несколько указаний о том, как это исправить.

Я пытаюсь использовать объект в файле, который включен тем же объектом. Я пытался вызвать $Views-> get_link(«GitHub»); но, к сожалению, он говорит, что переменная не найдена. Кажется, я не могу найти способ заставить это работать.

Вот код:

button.view.php:

 <a class="btn btn-lg btn-success " href="<?php $Views->get_link("GitHub"); ?>">
  

views.php:

 function load_view($view) {

    $viewpath = ZEAM_VIEW_BASEDIR.'/'.$view.ZEAM_VIEW_SUFFIX;

    if (file_exists($viewpath)) {

        include($viewpath); 

    }

}
  

Запуск объекта:

 // Okay, we're ready to start it up!

require('core.php');

$ZeamEngine = New Zeam(true);

require('modules.php');
require('views.php');

$Modules = New Modules($ZeamEngine);
$Views = New Views($ZeamEngine);

// Custom code for this

$Modules->load_module("ZeamRequisChecker");
$Views->add_link("GitHub", "http://github.com/Alphasquare/Zeam/");
  

Как бы я это сделал? Если вам нужна дополнительная информация или файлы, просто спросите.

Комментарии:

1. Это действительно необходимо?

2. @Sven Ваш комментарий не имеет отношения к делу и не отражает предположительно доверенного пользователя с оценкой репутации 13 639. Вы пытаетесь отговорить задавшего этот вопрос от изучения и создания чего-либо; это не очень хороший способ приветствовать нового пользователя в Stack Overflow.

3. @Nathan, я предполагаю, что Свен сказал что-то об изобретении колеса для создания языка шаблонов, но он сказал это не очень конструктивно. Хотя мой комментарий не касается вашего ответа, Серджио, я чувствую, что важно посмотреть на то, что уже доступно, не для того, чтобы отговорить вас от самостоятельного создания и обучения, а для того, чтобы понять, какие основные проблемы связаны с созданием движка шаблонов и как множество различных движков шаблонов PHP их решили.

4. Разве вы, ребята, не получаете инициативу делать что-то по-другому?

5. И нет, он говорил о количестве движков и прочем.

Ответ №1:

если load_view это метод представлений класса, если button.view.php это файл, который включен в метод load_view — вам нужно использовать $this вместо $Views .

 <a class="btn btn-lg btn-success " href="<?php $this->get_link("GitHub"); ?>">
  

http://www.php.net/manual/en/language.variables.scope.php

http://www.php.net/manual/en/language.oop5.basic.php

Комментарии:

1. Я попробую. Одна минута.

2. Хороший братан! Мне нравится этот ответ! Работает. @sectus