Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Голосование

    Какую CMS Вы предпочитаете

    AtomX
    Fapos CMS
    Drunya CMS
Последние комментарии
Автор: чайник, в новости:

Что такое API и для чего они нужны

Автор: HIshnik, в новости:

Классы в PHP для чайников

Автор: Аноним, в новости:

Написание простого вируса в блокноте

Автор: stream, в новости:

Создаем BB коды на PHP

Топ пользователей
Drunya
Репутация: 108
Сообщений: 3527
Сашка_из_Шебекино
Репутация: 87
Сообщений: 1803
boriska
Репутация: 65
Сообщений: 846
ARMI
Репутация: 46
Сообщений: 1858
BAH0
Репутация: 26
Сообщений: 544
Признаться, по правде, я думал, что в PHP 5.4 просто по латают дырки и добавят пару функций. Ну конечно же оптимизируют объектную часть, так как PHP превращается из шаблонизатора в настоящий язык программирования и без ООП ну никак. Но недавно узнал о новой языковой конструкции, которая меня просто поразила.

Это напомнило мне, чем то goto, но все же это не совсем оно. И я даже уже придумал кучу примеров где такая конструкция может быть весьма полезна.

На данный момент, даже в Fapos есть места, где было бы очень правильно использовать данную возможность.

Представляю вам trait.
Сразу пример из документации:
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
<?php trait ezcReflectionReturnInfo {
    function 
getReturnType() { /*1*/ }
    function 
getReturnDescription() { /*2*/ }
}

class 
ezcReflectionMethod extends ReflectionMethod {
    use 
ezcReflectionReturnInfo;
    
/* ... */
}

class 
ezcReflectionFunction extends ReflectionFunction {
    use 
ezcReflectionReturnInfo;
    
/* ... */
}?>

Ну разве не мило? Можно подключать любой код, даже части классов. Я был очень удивлен такому новшеству и очень рад, что оно появилось.

Вот еще пример:
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
<?php class Base {
    public function 
sayHello() {
        echo 
'Hello ';
    }
}

trait 
SayWorld {
    public function 
sayHello() {
        
parent::sayHello();
        echo 
'World!';
    }
}

class 
MyHelloWorld extends Base {
    use 
SayWorld;
}

$o = new MyHelloWorld();
$o->sayHello(); //выведет Hello World!?>
Новые возможности PHP 5.4

Теги: trait PHP языковая конструкция Новое в PHP5.4;
Автор: Drunya
Категория: PHP
Просмотров: 1911
Комментариев: 0

Сейчас online: 28. Зарегистрированных: 1. Гостей: 27.
-->