Пишу обзор возможностей PHP5. Тестирую каждую :-)

AlexVN

Новичок
Пишу обзор возможностей PHP5. Тестирую каждую :)

Кому интересно - заходите. Готова первая часть, в дальнейшем ожидаются еще штук 7. По материалам PHP5. В частности - по zend engine 2.0 changes.

http://devlink.narod.ru/
 

Frol

Новичок
Пример финального класса и финального метода:
Код:
final class Security {
    function createUser() {
        ...
    }
}

class View {
    final function createView(Security $user) {
        ...
    }
}
Поскольку класс Security является финальным, а функция View::createView требует в качестве параметра объект финального класса, это дает 100% гарантию, что в функцию createView будет передан именно объект Security, а не подмененный.
долго я перечитывал это...
 

Frol

Новичок
В связи с этим существовала интересная особенность работы с конструкторами: если класс Class2 унаследован от класса Class1, то конструктор класса Class1 не будет вызван при создании Class2. Для его вызова обязательно надо добавлять соответствующий метод в Class2, который вызывает конструктор класса Class1.
чего-то тут не хватает...
 

young

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

AlexVN

Новичок
>долго я перечитывал это...

Дык, я старался :)
Но я думаю, что final действительно примерно для этого используется. Например, есть у User метод isAdmin.
В таком случае я могу сделать объект MyUser, который всегда будет Admin. Хотя я, конечно, могу не вполне понимать использование final. Буду рад, если поделитесь мыслями по этому поводу.

>чего-то тут не хватает...
Хм... Чего?

2young:
Понятно, было :) Я же не по исходникам напрямую пишу. В том числе, читаю, что другие по этому поводу написали. Но плагиатом не занимаюсь - все написал сам, как я сам эти изменения понимаю.

Спасибо за комментарии!

С уважением,
Александр.
 

Frol

Новичок
> Хм... Чего

example:
PHP:
class a {

  function a() {
    echo 'a::a()';
  }

}

class b extends a {

}

$t = new b();
яснее?
 

Frol

Новичок
странный пример exceptions.. IMHO для этого не нужно исключение, достаточно return true/false
 

AlexVN

Новичок
2 Frol:
Да. Great! С конструкторами это я неправильно написал. Недотестил PHP4 начиная писать про PHP5 :)

Ну, тогда получается что чуть ли не единственный полезный эффект от __construct - это при изменени имени класса, от которого наследуется еще 10, необходимо сделать не 20 замен старого имени (extends Class, parent::Class), а 10 (только extends class).

Re: Exceptions.
Можно добавить еще одну функцию, которая криптует пароль через mcrypt и бросает exception, если mcrypt нет. Функция сравнения паролей сравнивает криптованный из базы и криптованный введенный пользовтелем (который через функцию криптования проходит).
Тогда exception перехватывается через 2 уровня.

Ну а вообще хотелось примером показать, что exception прерывает выполнение блока кода в try.

Спасибо за комментарии,
Александр
 

AlexVN

Новичок
Прошу прощения, забыл сказать, что сегодня статью обновить не получится. Но постараюсь как можно быстрее исправить!
 

Frol

Новичок
> Ну а вообще хотелось примером показать, что exception прерывает выполнение блока кода в try.
IMHO в первую очередь нужно показать то, зачем он нужен, а не что делает
 

AlexVN

Новичок
2 Frol: Замечания постарался учесть - немного изменил пример exceptions и информацию о конструкторах.

2 Aku Aku: исправил.

Пора вводить секцию Credits :)
Спасибо за замечания!
 

AlexVN

Новичок
Детали - это статьи на сайте?
details.phpclub.ru?

Вообще, хорошая идея. Но желательно с указанием ссылки на оригинальный сайт :) Все-таки я заинтересован в его раскрутке.

Кроме того, сейчас сделанно только 3 части из предполагаемых семи. Так что можно немного подождать и поместить все скопом. Ну, или по отдельности прямо сейчас. Как считаете лучше.
 

young

Новичок
может быть, стоит что-то перенести на Детали?
без проблем

Кроме того, сейчас сделанно только 3 части из предполагаемых семи
Я не люблю статьи которые растянуты как мыльные оперы.
3 части - еще нормально, но семь - перебор.

Специально для деталей, сверстай три первые в одну, оформь, и публикуем :)
 
Сверху