Библиотека Интернет Индустрии I2R.ru |
|||
|
Zend 2.0. Что нового?В скором времени движок Zend 2 будет составлять ядро PHP. Неплохо бы уже сейчас знать, чем новое ядро отличается от старого. В основном меня интересуют изменения в Объектной модели, так что в цикле переводов ей будет уделено особое внимание. Исправление объектной моделиПредпосылкиВ Zend 1.0 (который является ядром PHP) объектная модель была спроектирована так, что создаваемые объекты были переменными языка. Это значит, что когда программисты производили операции, например, объявление переменной и передачу параметра функции, объекты обрабатывались практически так же, как простые типы integer или string. Семантически это означает, что целый объект копируется. В Java совсем другой подход, когда ссылаться на объект можно по указателю, а не по переменной (можно рассматривать указатель как ID объекта). НеобходимостьК сожалению, существующий подход в Zend Engine 1.0 вызывает ограничения в объектной модели. Главная проблемы в том, что очень сложно контролировать создание и дублирование объектов. Это ведет к неэффективной разработке и иногда вызывает странное поведение программы при запуске. Изменение объектной модели на указатель-ориентированную позволит ввести такие полезные вещи, как деструкторы, полный контроль над дублированием объектов и т.п. ОбзорПредлагаемая объектная модель взяла многое из модели в Java. В общем, когда вы создаете новый объект, вы получаете указатель на объект, а не сам объект. Когда этот указатель посылается функции, объявляется или копируется, это всего лишь указатель, который посылается/объявляется/копируется. Сам объект никогда не копируется и не дублируется. В результате получается, что все указатели объекта ссылаются на один и тот же объект. Это устраняет ненужное дублирование объектов и их странное поведение. ФункциональностьПосле изменения объектной модели, манипуляции с объектами останутся практически неизменными. Однако вы больше не будете сталкиваться с неуклюжим и странным копированием и уничтожением объектов. Для того, чтобы создать и использовать экземпляр объекта, необходимо сделать следующее:
$object = new MyClass(); В этом коде переменная $object является указателем на экземпляр объекта класса MyClass и вызывается один из методов данного класса. Рассмотрим следующий код:
1 class MyClass Без Java-подобных указателей в строке 20 свойство Именно так сейчас работает объектная модель. Большинство разработчиков и не подозревает, что они зачастую работают не с самими объектами, а с их дубликатами. Новая объектная модель позволяет писать более интуитивный код. В строке 21 в функцию Это лишь краткое описание того, почему новая объектная модель устраняет нелогичное поведение и делает манипуляции с объектами более простыми, интуитивными и эффективными. Важность этих изменений будет понятна позже, потому что они служат базисом для новых свойств. |
|
2000-2008 г. Все авторские права соблюдены. |
|