Если честно, я так далеко не углублялся)
Но
Цитата:
Почему это возвращает array(5 => ) ... А это NULL
print_r($a) - выводит информацию о переменной в удобочитаемом виде.
var_dump($a) - отображает структурированную информацию об одном или нескольких выражениях, включая
их тип и значение.
поэтому, print_r возвращает array(5 => )
Замени на var_dump и посмотри в своем примере.
Если нужно глубже - пробуй, экспериментируй, усложняй постепенно.
Вот набросал пример, упростив view.php :
Код:
<?php
error_reporting(E_ALL | E_STRICT);
class View {
protected $_data = array();
protected $_file;
public static function factory($file = NULL, array $data = NULL)
{
return new View($file, $data);
}
public function __construct($file = NULL, array $data = NULL)
{
if ($file !== NULL)
{
$this->_file = $file . '.php';
return $this;
}
if ($data !== NULL)
$this->_data = $data + $this->_data;
}
public function bind($key, & $value)
{
$this->_data[$key] =& $value;
var_dump($this->_data);
return $this;
}
public function render($file = NULL)
{
if ($file !== NULL)
$this->set_filename($file);
return View::capture($this->_file, $this->_data);
}
protected static function capture($kohana_view_filename, array $kohana_view_data)
{
extract($kohana_view_data, EXTR_SKIP);
ob_start();
include $kohana_view_filename;
return ob_get_clean();
}
}
$tpl = View::factory('view')
->bind('yyy', $r)
->render();
echo '<p>' . $tpl . '</p>';
echo '<br>Отладка:';
var_dump($tpl);
В эту же папку кладем view.php
Код:
Это шаблон view.php
<?php echo $yyy ?>
p/s/ только это не совсем понятным осталось &NULL
