Ярлыки

.htaccess (4) тестирование (8) шаблоны проектирования (3) css (5) Debian (6) docker (2) Doctrine2 (6) Git (6) html (4) java (6) javascript (13) jquery (11) LFS (3) linux (23) mac os (4) mod_rewrite (2) MSSQL (4) MySQL (18) ORM Doctrine (17) patterns (3) PDO (3) perl (7) PHP (64) PHPUnit (8) Python (15) SEO (2) Silex (1) SimpleXML (1) SQL (14) ssh (4) Ubuntu (24) Yii1 (1) Zend Framework (19) ZendFramework2 (8)

четверг, 13 сентября 2012 г.

PHP. Строгая типизация с SPL_Types

Строгая типизация возможна в php, для этого требуется установить расширение pecl SPL_Types



Пример для перечисления (Enum)

class Role extends SplEnum {
 
         const __default = 1;
 
         const ADMIN = 0;
 
         const USER = 1;
}

class User {
        
        ...

        protected $role = Role::USER;

        public function setRole(Role $role) {
                 $this->role = (int) $role;
        }

        public function getRole() {
                 return $this->role;   
        }

        ...
}

$user = new User();
$role = new Role(Role::ADMIN);
$user->setRole($role);

var_dump($user->getRole()); // int(0)

$role = new Role(5); // PHP Fatal error:  Uncaught exception 
                     // 'UnexpectedValueException'
                     // with message 'Value not a const in enum Role' in ...