Как быть, если конструктору переданы неверные данные?

nbah

Новичок
Как быть, если конструктору переданы неверные данные?

Как быть, если конструктору переданы неверные данные? Как грамотней сообщить клиенту (к примеру, другому объекту), что корректный объект так и не был создан?
 

inTox

вёбных дел мастер
например проверять данные до, а не после передачи конструктору.
 

nbah

Новичок
механизм проверки корректрности данных должен быть предусмотрен в самом классе
 

nbah

Новичок
при ошибке создавать объект другого класса? (класса Error (с полем, где храниться инфа о природе ошибки))
 

Santito

Новичок
ТОлько exception!
Если при создании объекта класса (Error) ты можешь передать тоже неверные данные!
Exception и какую-нибудь инфу в лог!
 

nbah

Новичок
полистал ман, мало что понял...
exception у меня будет возникать часто, конкретно: при попытке создать незарегистрированного пользователя (создать объект по логину пользователя, о котором нет инфы в БД).

-~{}~ 09.03.05 16:48:

имеет ли смысл использовать конкретно в моем случае механизм исключений?
 

vitus

мимо проходил
имеет ли смысл использовать конкретно в моем случае механизм исключений
в любом конкретном случае этот механизм имеет смысл использовать

эк сказал-то, а! ;)
 

nbah

Новичок
всяко не в любом. в конкретном случае "hello world!" его приминение лишино смысла
 

Screjet

Новичок
Четыре способа:
1. Поле в объекте.
2. Аргумент по ссылке в конструктор.
3. Обратный вызов.
4. Exсeption (пхп5).

А вообще было бы адекватно, если бы сам объект применял антимеры (я бы так и сделал: реализация проще и объективность не нарушается), например "расстрелять родителя" :)
 

nbah

Новичок
у меня 4й пхп

-~{}~ 09.03.05 17:22:

vitus
а тогда клиент не узнает причины неудачи

-~{}~ 09.03.05 17:23:

Frol
да понял я идею Фабрики. я об исключениях говорю
 

vitus

мимо проходил
создать объект по логину пользователя, о котором нет инфы в БД
сколько возможных вариантов?
и почему это в конструкторе?

$user=new User();
$user->login($login,$password);
echo $user->loginStatus();
 

nbah

Новичок
Frol и зачем мне эти примеры? хочешь поговорить на тему HelloWorld?
 
Сверху