[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Строготипизированный массив
Страницы: 1, 2, 3
twin
Цитата (Zzepish @ 7.10.2018 - 09:31)
Он просто прерывает дальнейшее выполнение программы.

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

Цитата (Zzepish @ 7.10.2018 - 09:31)
Суть в том, чтоб иметь возможность создавать коллекции элементов одного типа с контролем на уровне массива.
Ну я и говорю, для процедурки. В ООП для этого придумали DTO.


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Ron
Цитата (twin @ 7.10.2018 - 18:17)
Ну я и говорю, для процедурки. В ООП для этого придумали DTO.

Может быть все же VO? =) Хоть многие и считают их синонимами, на мой взгляд это несколько разные вещи.

twin
Цитата (Ron @ 7.10.2018 - 17:50)
Может быть все же VO? =) Хоть многие и считают их синонимами, на мой взгляд это несколько разные вещи.

Можно и VO. Они различаются только в контексте применения. VO для хранения, DTO для транспортировки.

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Michael
1) Зачем тебе protected $is_object; если он нигде кроме конструктора не используется?

2) Ты его не тут потерял?, потому что вот так ненаглядно:

$valid = true;
if ((!\is_object($value) || !($value instanceof $this->type))
&& (
gettype($value) !== $this->type)) {
throw new IncorrectValueTypeException('Value type does not match "' . $this->type . '"');
}

и valid не используется.
По логике должно бы так:
if ($this->is_object) {
if (!\is_object($value) || !($value instanceof $this->type)) {
$valid = false;
}
}
else {
$valid = gettype($value) === $this->type;
}


3) Проверка в конструкторе у тебя странная (хотя этот $is_object и не используется), а что если массив захотят добавить, оно определит что это объект...

4) Я бы использовал именованные конструкторы

public function __construct($type, $is_object = false)
{
$this->type = $type;
$this->is_object = $is_object;
}

public static function getIntegerArray()
{
return new static('integer');
}

public static function getObjectArray($interfaceType)
{
return new static($interfaceType, true);
}



_____________
There never was a struggle in the soul of a good man that was not hard
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.