Ben direği esinlenerek PHP için bir asgari MVC koyarak oldum. Benim kontrolörleri şöyle:
<?php
defined('__CORE__') or die('no direct access');
class Demo extends BaseController
{
public function hello($args)
{
return parent::render('hello_tmpl', array('foo' => 'bar'));
}
}
?>
<?php
defined('__CORE__') or die('no direct access');
class BaseController
{
public function render($template, $vars=FALSE)
{
// Load up some global variables to put into the template's scope
global $map;
if ($vars !== FALSE)
extract($vars);
// Load up the template file's contents and save to the $_body variable
// This variable will be utilized in base.html
ob_start();
include VIEW . '/' . $template . '.phtml';
$_body = ob_get_contents();
ob_end_clean();
require_once(VIEW . '/base.php');
}
}
?>
Ne ile sorun yaşıyorum Görünümü küresel değişkenleri ortaya çıkarmak için güzel bir yol ile geliyor. $map
başka bir dosyada tanımlanmış Routes mapper. Bu yüzden $map->url_for('home_page')
kullanabileceği ben bu görünümü ve Kontrolörleri maruz istiyorum.
Bunu yapmak için düzgün bir yolu nedir? İdeal olarak, BaseController yer almak istiyorum bu yüzden gibi bir şey yapabilirsiniz:
public function hellp($args)
{
$home_page = parent::$map->url_for();
}
Yanı sıra adlı işletmeye $map
erişme.