私はMVCに基づく小さなPHPWebサイトに取り組んでいます。front.php
コントローラー( )をロードしservices.php
、アクションメソッド(hostingAction()
)を実行し、html()を含むフロントコントローラー( )がありますview.phtml
。view.phtml($this->renderContent()
)には、内部コンテンツ()を含むメソッド呼び出しがありhosting.phtml
ます。
質問:メソッドでプロパティ(たとえば$title = 'My Title';
)を設定hostingAction()
してからview.phtmlで設定するにはどうすればよい<title><?php echo $title ?></title>
ですか?
Zend Frameworkは$this->view->title = 'My Title';
コントローラーでのようなことを行い、次にビューでのようなことを行い<title><?php echo $view->title; ?></title>
ます。
現在、プロパティをオーバーロードしています。コントローラアクションでプロパティを設定できましたが、ビューでプロパティにアクセスできませんでした。私はここで何が間違っているのですか?
サンプルコード:
front.php
class front {
private $view;
function __construct() {
$this->view = new viewProperties();
$this->constructController();
include('application/views/view.phtml');
}
private function constructController() {
$c = new services();
$this->doAction($c);
}
public function renderContent() {
include('application/views/services/hosting.php');
}
private function doAction($c) {
$c->hostingAction();
}
}
services.php
class services {
public function hostingAction() {
$this->view->page_title = 'Services - Hosting';
$this->view->banner_src = '/assets/images/banners/home_02.jpg';
$this->view->banner_title = 'reload';
}
}
viewProperties.php
class viewProperties {
private $data = array ();
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function __get($name) {
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
}
}
view.phtml
<html>
<head>
<title><?php echo $this->view->page_title; ?></title>
</head>
<body>
<?php $this->renderContent() ?>
</body>
</html>
hosting.phtml
<div id="banner">
<img src="<?php echo $this->view->banner_src ?>" alt="<?php echo $this->view->banner_title ?>" />
</div>