, yapıcı metotta bir istisna atabilir:
Anlaşılır olması için
class NotFoundException extends Exception {}
class User {
public function __construct($id) {
if (!$this->loadById($id)) {
throw new NotFoundException();
}
}
}
$this->LoggedUser = NULL;
if ($_SESSION['verbiste_user'] != false) {
try {
$this->LoggedUser = new User($_SESSION['verbiste_user']);
} catch (NotFoundException $e) {}
}
, statik bu sarabilirdiniz fabrika yöntemi:
class User {
public static function load($id) {
try {
return new User($id);
} catch (NotFoundException $unfe) {
return null;
}
}
// class body here...
}
$this->LoggedUser = NULL;
if ($_SESSION['verbiste_user'] != false)
$this->LoggedUser = User::load($_SESSION['verbiste_user']);
Ayrıca, PHP 4'ün bazı sürümleri, bunu NUL'ye ayarlamanıza izin verir. Kurucunun içindeyim ama sanırım hiç resmi olarak onaylanmadı ve 'özellik' sonunda ortadan kaldırıldı.
Büyük ilk soru. –
Bir kurucuda FALSE döndüren belirli bir popüler CMS gördüm. Ne var ne yok? – loungerdork
Sadece belgelemek için buraya gelmeyi düşündüm. Tarih çok uzak olduğundan, gördüğünüz CMS'nin PHP4 için yapılmış olması mümkündür. PHP4, bir çok kötü şeye izin vermek için kullanılır, en azından kullanıcının adlandırılmış yapıcıda $ 'ın üzerine yazmasına izin vermez (örneğin $ this = false). – techdude