Size: a a a

2016 July 02

S

SiZE in Yii Framework 2
Maxim
да в целом типизация зло, ведь ты никогда не знаешь, что тебе придет в функцию, объект, строка или число. Да и по уму надо было сделать было 1 тип и все методы работы только с ним)
😂😂😂
источник

N

Nikita in Yii Framework 2
а для простых данных нельзя указать вариацию..
источник

VR

Vasily Rusty in Yii Framework 2
Вы чо тут насрали?
источник
2016 July 03

DP

Denis Podlesnykh in Yii Framework 2
источник

🄽

🄽🄸🄺🄸🅃🄰 in Yii Framework 2
Хм
источник

🄽

🄽🄸🄺🄸🅃🄰 in Yii Framework 2
А отсутствие интерфейсов, это нормально?
источник

N

Nikita in Yii Framework 2
работает и ок
источник

🄽

🄽🄸🄺🄸🅃🄰 in Yii Framework 2
Пытался ознакомится с кодом со своего nexus 5, и первое что бросилось в глаза, так это передача $transport любой переменной без проверки типа .. а позже соответственно вызов методов от него. Эта переменная передается в yii::createObject, и от нее вызывают методы, которых может не быть. Такое в коде большого проекта отследить будет трудно
источник

🄽

🄽🄸🄺🄸🅃🄰 in Yii Framework 2
Хотябы несколько интерфейсов или уж абстрактных классов, на методы фабрики
источник

🄽

🄽🄸🄺🄸🅃🄰 in Yii Framework 2
Нет? Может я что-то упускаю?
источник
2016 July 04

S

SiZE in Yii Framework 2
 Эта переменная передается в yii::createObject, и от нее вызывают методы, которых может не быть. Такое в коде большого проекта отследить будет трудно

это как так вызываются методы которых может не быть? :)
источник

🄽

🄽🄸🄺🄸🅃🄰 in Yii Framework 2
Простой пример:
источник

🄽

🄽🄸🄺🄸🅃🄰 in Yii Framework 2
public function setTransport($transport)

{

$this->_transport = $transport;

}

public function getTransport()

{

if (!is_object($this->_transport)) {

$this->_transport = Yii::createObject($this->_transport);

}

return $this->_transport;

}

public function send($request)

{

return $this->getTransport()->send($request);

}
источник

🄽

🄽🄸🄺🄸🅃🄰 in Yii Framework 2
В setter методе нет проверки по типу, поэтому туда может быть передан любая сущность , даже не класс. Если даже класс, то он может не обладать нужным набором атрибутов или свойств, необходимых для полноценной работы transport сущности.
источник

🄽

🄽🄸🄺🄸🅃🄰 in Yii Framework 2
Таким образом ошибки могут возникнуть на любом из этапов, если этот компонент не будет вызываться ток в 1 месте, а будет обернут во что либо динамическое, например внутри какой либо crm
источник

🄽

🄽🄸🄺🄸🅃🄰 in Yii Framework 2
Разработчик пользователь может не углядеть, каким требованиям должен удовлетворять его новый класс типа транспорт, так как нет строгово интерфейса, или абстрактного класса. И баги будут выдавливаться по ходу дела
источник

🄽

🄽🄸🄺🄸🅃🄰 in Yii Framework 2
В приведенной вырезке, у $transport может не быть send метода. Да глупость, но не требуют наличие и не проверяют, вплоть до места вызова..
источник

🄽

🄽🄸🄺🄸🅃🄰 in Yii Framework 2
И в этом духе все остальное. Этот компонент сделан расширяемый, но отсутствуют основные элементы SOLID
источник

🄽

🄽🄸🄺🄸🅃🄰 in Yii Framework 2
Если не прав, поправте
источник

AB

Alex Bond in Yii Framework 2
Никита, я рекомендую тебе написать в гиттер с упоминанием samdark
источник