Я создал свою собственную структуру MVC и интересуюсь тем, как другие фреймворки могут отправлять свойства с «контроллера» на «представление». Zend делает что-то вдоль линий $this->view->name = 'value';
Мой код:PHP Overloading, singleton instance
файл: services_hosting.php
class services_hosting extends controller {
function __construct($sMvcName) {
parent::__construct($sMvcName);
$this->setViewSettings();
}
public function setViewSettings() {
$p = new property;
$p->banner = '/path/to/banners/home.jpg';
}
}
файл: controller.php
class controller {
public $sMvcName = "home";
function __construct($sMvcName) {
if ($sMvcName) {
$this->sMvcName = $sMvcName;
}
include('path/to/views/view.phtml');
}
public function renderContent() {
include('path/to/views/'.$this->sMvcName.'.phtml');
}
}
файл: property.php
class property {
private $data = array();
protected static $_instance = null;
public static function getInstance() {
if (null === self::$_instance) {
self::$_instance = new self();
}
return self::$_instance;
}
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function __get($name) {
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
}
public function __isset($name) {
return isset($this->data[$name]);
}
public function __unset($name) {
unset($this->data[$name]);
}
}
В моем файле services-services services.host.phtml у меня есть:
<img src="<?php echo $this->p->banner ?>" />
Это просто не работает. Я делаю что-то принципиально неправильное или неверно? На данный момент я, кажется, собираюсь кругами. Любая помощь будет очень высоко ценится.
Как выглядит ваш передний контроллер? Мне очень нравится, как symfony2 обрабатывает это с помощью объекта ответа. См. Http://symfony.com/doc/2.0/book/http_fundamentals.html – shapeshifter
Перегрузка и Синглтон часто являются концепцией конфликта. Подумайте о том, чтобы удалить Синглтон и посмотреть, не исчезла ли ваша проблема. Если вам нужны экземпляры одного объекта этого класса, сохраните их в глобальной переменной или глобальном массиве на данный момент. – hakre
@hakre Первоначально в моем.PHTML я имел: '$ р = свойство :: деЫпзЬапс();' тогда: ' jamalali81