При закрытии подписчики были переданы в рассылку "Заметки Дизайнера" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Содержание Вниманию читателей!Отдельные выпуски рассылки в той или иной мере взаимосвязаны; особенно, это относится к материалам практических занятий. С предыдущими выпусками Вы можете ознакомиться:
# # # Вы также можете подписаться на рассылку "PHP 5 для начинающих". PHP 6 уже в разработке!Еще в ноябре 2005 года на встрече в Париже разработчики обсудили новые возможности следующей, шестой, версии PHP. Интересует ли Вас, какой будет эта версия? Примите участие в опросе, который проводится на сайте рассылки. http://pterodactyl.l2p.net/e107/ [опрос на английском языке: PHP 6: Are you interesting in? (PHP 6: Вы зантересованы?) - YES (ДА) - NO (НЕТ)] |
PHP 5: Новые возможности.The PterodactylCopyright 2006 Pterodactyl's School Copyright 2006 Pterodactyl's School. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". 24.03.2006
Аннотация Подробно рассмотрены различия в сравнении объектов между PHP 4 и PHP 5. Продолжена разработка учебного приложения. Содержание Сравнение объектов в PHP 4 и PHP 5 происходит по-разному (Пример 1, «Сравнение объектов в PHP 4 и PHP 5»). В частности, это связано с улучшенным механизмом копирования объектов в PHP 5. Так или иначе, но поведение сравниваемых объектов в PHP 5 в большей степени соответствует тому, которое можно было бы ожидать в рамках развитой объектной модели. И PHP 4, и PHP 5 сравнивают объекты только одинаковых классов, проверяя названия переменных и их значения. В PHP 4 равными считаются объекты, принадлежащие одному и тому же классу, обладающие одинаковыми наборами переменных с попарно равными значениями. При этом не имеет значения, при помощи какого оператора производится сравнение - обычного ( В PHP 5 результат сравнения зависит от используемого оператора. При обычном сравнении все происходит таким же образом, как и в PHP 4. А вот при строгом сравнении объекты считаются равными в том, и только в том случае, если они ссылаются на одну и ту же область памяти (это возможно, например, если один объект перед тем был приравнен к другому). Пример 1. Сравнение объектов в PHP 4 и PHP 5 <?php class Foo { var $test; function Foo($test) { $this->test = $test; } } class Bar { var $test; function Bar($test) { $this->test = $test; } } $foo = new Foo('test'); $foo1 = new Foo('test'); $foo2 = $foo1; $bar = new Bar('test'); print '<p>'; print phpversion(); print '<br />'; print $foo == $foo1 ? 1 : 0; // true print $foo === $foo1 ? 1 : 0; // true (PHP 4), false (PHP 5) print $foo1 == $foo2 ? 1 : 0; // true print $foo1 === $foo2 ? 1 : 0; // true print $foo == $bar ? 1 : 0; // false print $foo === $bar ? 1 : 0; // false print '</p>'; ?> 4.4.2 111100 5.1.2 101100 С работой модифицированного варианта этого примера для PHP 5 на нашем сайте можно ознакомиться здесь. Те, кто приобщился к информационным технологиям лет пятнадцать назад, наверное, помнят, как трудно было подружить тогдашнее программное обеспечение с русским языком. Приходилось редактировать исполняемый код приложений, после чего они переставали поддерживать английский язык; запускать какие-то резидентные программы, конфликтующие с операционной системой; или же прибегать к иным, не менее неуклюжим, приемам. Самое забавное, что "русифицированные" таким образом приложения зачастую становились менее понятными и удобными в использовании, чем оригинальные. По мере присоединения к компьютерному сообществу все большего числа пользователей из различных стран остро встала проблема поддержки не только различных языков, но и национальных особенностей отображения даты, времени, используемых в той или иной стране единиц измерения и т. п. Современные приложения, как правило, поддерживают наиболее распространенные языки, а, главное, обеспечивают сравнительно легкую возможность добавления поддержки новых языков. Потенциальная способность приложения поддерживать различные языки (и связанные с ними форматы даты и времени, телефонных номеров и почтовых адресов, единицы измерения, валюту и пр.) называется интернационализацией (internationalization, или сокращенно i18n, где 18 - количество пропущенных букв), а реализация этой способности к конкретному языку (стране) - локализацией (localization, или l10n). Идеи интернационализации и локализации в полной мере распространяются и на веб приложения. Поэтому текущие и несколько последующих практических занятий будут посвящены внедрению этих идей в наше учебное приложение. К счастью, оба основных класса, используемых этим приложением - До сих пор мы жестко задавали язык и кодировку генерируемой страницы в конструкторе класса $attributes = array('language' => 'ru', 'charset' => 'windows-1251'); Такой подход нельзя назвать согласующимся с принципами интернационализации. Действительно, в его рамках для создания страниц на различных языках понадобилось бы разрабатывать отдельные классы для каждого языка (например, Более продуктивным представляется вынос установки языка и кодировки в отдельный метод (Пример 3, «Метод ВниманиеДля этого придется изменить видимость (доступность) переменных Поддерживаемые приложением пары 'язык - кодировка' вынесем в конфигурационный файл (Пример 4, «Конфигурационный файл В качестве критерия выбора на первых порах воспользуемся первым из принимаемых броузером пользователя языков (переменная ПодсказкаДля того, чтобы воспользоваться новой возможностью, необходимо в настройках броузера добавить русский язык в число принимаемых (если это не было сделано ранее) и поместить его на первое место (Move Up). FireFox: Edit - Preferences - Advanced - Languages - Edit Languages.... MS Internet Explorer: Tools - Internet Options... - General - Languages.
Пример 2. Конструктор класса function __construct { $this->options['title'] = 'SSS 0.08 Demo Page'; $this->options['config'] = 'config.ini'; $this->options['template'] = 'index.htm'; $this->l10n(); parent::__construct(); }
Пример 3. Метод private function l10n() { $language = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); $config = parse_ini_file($this->options['config'], true); if (array_key_exists($language, $config['i18n'])) { $this->attributes['language'] = $language; $this->attributes['charset'] = $config['i18n'][$language]; } return true; }
Пример 4. Конфигурационный файл [i18n] en = iso-8859-1 ru = windows-1251 [HTML_Template_Flexy] templateDir = templates compileDir = templates/compiled Полный листинг текущей версии всех файлов, входящие в наш учебный пример, можно найти здесь. |
В избранное | ||