@dev400

Простительно ли тут немножечко статики?

Речь идет о свойстве $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 работает вне объекта. Насколько это плохо, как считаете?
  • Вопрос задан
  • 237 просмотров
Решения вопроса 1
Antiless
@Antiless
Думаю - плохо. Одна страница - один объект в т.ч. с одной метой. И не понятно зачем конкретно статика тут.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы