YiiFramework Это шаблон проектирования или хорошие практики?

Spike

Новичок
Вот код опытного разработчика :

PHP:
Class StringHelper
{
    private $limit;
    
    public function __construct() {
        $this->limit = Yii::$app->params['shortTextLimit'];
    }
    
    public function getShort($string, $limit = null)
    {
        if ($limit === null){
            $limit = $this->limit;
        }
        return substr($string, 0, $limit);
    }
}
Почему не упростить его до этого?
PHP:
Class StringHelper
{
    
    public function getShort($string, $limit = null)
    {
        if ($limit === null){
            $limit = Yii::$app->params['shortTextLimit'];
        }
        return substr($string, 0, $limit);
    }
}
Зачем записывать значение из параметров в свойство объекта если можно его напрямую вызвать при выполнении метода getShort?

Это что? Хорошие практики или шаблоны проектирования? Зачем так делать, объясните, хочу понять :)
 

Adelf

Administrator
Команда форума
PHP:
class StringHelper
{
    private $limit;
   
    public function __construct(int $limit) 
    {
        $this->limit = $limit;
    }
   
    public function getShort(string $string, int $limit = null)
    {
        if ($limit === null) {
            $limit = $this->limit;
        }

        return substr($string, 0, $limit);
    }
}
Вот более-менее приличный код. Его можно везде использовать, не только Yii. Все что ему нужно для работы он просит в конструкторе. Главное в DI его сконфигурить как надо.
 

fixxxer

К.О.
Партнер клуба
А вообще, если бы мне пришлось суппортить проект, написанный на Yii, я бы, наверное, как в п.1 сделал, на самом-то деле. Раз уж придется завязываться на сервис-локатор, пусть вся эта гадость будет только в конструкторе.

Но я предпочитаю избегать такой ситуации, в которой мне бы пришлось суппортить проект, написанный на Yii.
 
Сверху