Речь идет о свойстве $meta
<?php
namespace app\Common\View;
class BaseView implements ViewInterface
{
use ViewTrait;
public $data = [];
public $layout = '/layouts/blog';
public $layoutPath;
private static $meta = [];
public static function setMeta($key, $value) {
self::$meta[$key] = $value;
}
public static function getMeta($key) {
return self::$meta[$key];
}
public function setLayout( $layout = null) {
if ( !is_null($layout) ) {
$this->layout = $layout;
}
}
public function set($property, $value) {
$this->{$property} = $value;
}
public function get($property) {
return $this->{$property};
}
public function layoutPath($path) {
return __DIR__ . '/app/web' . $path . ".php";
}
public function render($template, $data = []) {
( is_null($data) ) ?: extract($data);
ob_start();
if ( file_exists( $this->layoutPath($template) ) ) {
require $this->layoutPath($template);
} else {
echo 'Template not found!';
}
return ob_get_clean();
}
}
В представлении я его устанавливаю
//
use app\Common\View\BaseView as View;
//
View::setMeta('title', 'Страница');
А в лейауте я его геттером вывожу
//
use app\Common\View\BaseView as View;
//
<title><?= View::getMeta('title') ?></title>
То есть BaseView::$meta работает вне объекта. Насколько это плохо, как считаете?