Цитата(Smak @ 3.7.2008, 08:39 ) | | Собственно как вернуть из конструктора false вместо объекта? |
Естественно, false в конструкторе вернуть нельзя, но это и не нужно. То что в конструктор были переданы не верные данные - исключительная ситуация, и соответственно, нужно бросить экзепшен. Пример:
| Код | class ArgumentNullException extends Exception { public function __construct($arg) { parent::__construct('Argument '.$arg.' is null', 0); } }
class Some { public function __construct($notNull) { if ($notNull === null) { throw new ArgumentNullException('$notNull'); } } }
$obj = null;
try { $obj = new Some(null); } catch (ArgumentNullException $ex) { echo $ex->getMessage()."\n"; // Argument $notNull is null }
var_dump($obj); // NULL
|
Ситуации когда нужно именно бросать экзепшены, а не возращать "фолзы", имхо, хорошо описал LSD http://forum.vingrad.ru/index.php?showtopic=216818&view=findpost&p=1555459. |