[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Web - программирование / PHP /

Что нового в PHP4?

Christophe Lauer, Head of R&D (mailto:clauer@techmetrix.net)
Оригинал http://idm.internet.com/articles/200008/php_08_30_00a.html

Так долго ожидаемая версия PHP4 вышла в конце мая 2000 года. PHP4 успешно прошло стадии Beta-test (бета тестирование) и Release Candidate (кандидат на релиз). Сейчас доступна окончательная версия PHP4.0.3p1.

С выходом каждой новой версии программного продукта, постоянно возникают одни и те же вопросы: "Что нового в этой версии ?" и "Какие из нововведений действительно полезны ?". Вполне законные вопросы. Стоит ли переходить на новую версию? Ведь это может вызвать массу различных проблем.

В статье будут бегло рассмотрены новые возможности PHP4, что поможет оценить по достоинству гигантскую работу, проделанную Zeev Suraski, Andi Gutmans и другими.

В чем отличие между PHP3 и PHP4?

PHP4 - это полностью переписанный PHP3, включая движок. Но почему авторы решили все полностью переписать?

Способ, с помощью которого работает скриптовый движок PHP3 не приспособлен к выполнению больших, широко - масштабируемых приложений, таких как Phorum или KeyStone. В действительности, движок считывает инструкции скрипта строчку за строчкой, и также построчно потом выполняет, что позволяет PHP3 достичь высокой производительности на достаточно коротких и простых скриптах, однако производительность сильно падает на больших приложениях. Важно осознать, что PHP3 не было приспособлено для выполнения таких приложений.

Поэтому создатели PHP3 решили разработать скриптовый движок, который будет считывать целиком все PHP коды и "компилировать" их перед выполнением. Движок назвали Zend. При переходе с PHP2 на PHP3 возникло много несовместимости. Такие различия между PHP3 и PHP4 постарались минимизировать. Авторам это удалось. Несовместимости очень мало.

Хотя Zend и является составной частью PHP4, на самом деле, это скриптовый/рантайм (scripting/runtime) движок, который не привязан к языку PHP. Таким образом, Zend можно использовать совместно с MySQL, как основу для разработки хранимых процедур, написанных на специфичном для этой базы данных языке.

Не вдаваясь в детали внутренней реализации, можно выделить несколько особенностей совместно работающих Zend и PHP4.

Новая архитектура PHP4 позволила разработчикам добавить в ядро языка абстрактный слой относительно веб - сервера. Начиная со времен PHP3 и по сегодняшний день, мы были вынуждены выбирать, использовать PHP, как модуль веб - сервера Apache, либо как CGI во всех других HTTP серверах. С появлением PHP4, стала возможна более тесная интеграция с веб серверами, отличными от Apache. В частности с веб - сервером IIS корпорации Microsoft. PHP4 теперь работает, как ISAPI фильтр для IIS. Для этого некоторые части кода PHP4 были адаптированы для работы в мультитредовом (multi-thread) окружении. PHP4 теперь тредо-безопасный (thread-safe).

Существует много новых особенностей, касающихся внутренней реализации PHP4, однако они напрямую никак не касаются PHP программиста. Тем не менее, стоит остановиться на самых важных из них: механизм выделения памяти, механизм подсчета ссылок. Другими словами, эти механизмы высвобождают ресурсы, которые больше не используются. Таким образом, улучшается использование памяти, особенно для объектов и таблиц. Чем больше информации содержат переменные, тем больше памяти остается свободно.

С точки зрения разработчика.

Каковы главные различия между PHP3 и PHP4 с точки зрения пользователя (PHP4 дизайнер/разработчик )?

Сессии

Одни из наиболее ожидаемых функций PHP4, это функции поддержки сессий. Т.е. все те значения и переменные, которые привязаны к конкретному пользователю и могут передаваться от страницы к странице внутри одного приложения.

При использовании PHP3, было необходимо выстраивать систему сессий вручную, с помощью механизма cookie, передачу параметров или используя PHPLib. PHPLib до сих пор может использоваться и с PHP4, потому что предоставляет и другие возможности, кроме управления сессиями.

Целая группа директив конфигурации в php.ini снимает с программиста бремя заботы о контекстах сессий и пользователей. Переменные сессий могут храниться просто в ASCII файле либо в реляционной базе данных. Все эти возможности задокументированы в официальном описании PHP4

Буферирование вывода

В PHP3, все, что было сгенерировано с помощью функций echo() и print(), сразу отсылалось непосредственно серверу. В PHP4, промежуточный запоминающий слой может задержать посылку веб серверу потокa выходных данных. Для этих целей, существует ряд еще недокументированных функций:

  • ob_start(): активирует буферизацию вывода
  • ob_end_flush(): отсылает содержимое выходного буфера и деактивирует буферизацию
  • ob_end_clean(): освобождает содержимое выходного буфера и деактивирует буферизацию
  • ob_get_contents(): возвращает содержимое выходного буфера

Этими функциями можно заранее подготовить содержимое вывода, формируемое с помощью, например, нескольких запросов к базе данных, и потом отослать результат на сервер, в случае успешного завершения этих запросов. В противном случае, можно очистить выходной буфер и вместо него вывести сообщение об ошибке. Следующий пример иллюстрирует типичное использование этих возможностей:


Оператор вычисления идентичности

Этот оператор позволяет проверить равенство значений, а также совпадение типов двух различных переменных или выражений. С помощью неявного преобразования типов в PHP, число 5 может сравниваться со строкой "5". Два этих значения считаются равными при обычном сравнении. Новый же оператор, возвращает TRUE (истина) только в том случае, если идентичны значения и типы переменных. Он представляется тремя знаками === (===). В следующем примере четыре первых выражений используют обычный оператор сравнения и все они возвращают TRUE. Последующие четыре используют оператор вычисления идентичности, и только пятое и восьмое выражения возвращают TRUE.

$valint1 = 1;
$valint2 = 2;
$valint3 = 3;
$valfloat1 = 1.0;
$valfloat2 = 2.0;
$valfloat3 = 3.0;
$valstr3 = '3';
$res = (($valint1+$valint2)==$valint3) ? ('TRUE'):('FALSE') ;
print " TEST 1 : " . $res . "
\n"; $res = ($valint3==$valfloat3) ? ('TRUE') : ('FALSE') ; print " TEST 2 : " . $res . "
\n"; $res = ($valstr3==$valint3) ? ('TRUE') : ('FALSE') ; print " TEST 3 : " . $res . "
\n"; $res = (($valfloat1+$valfloat2)==$valfloat3) ? ('TRUE') : ('FALSE') ; print " TEST 4 : " . $res . "
\n
"; "; $res = (($valint1+$valint2)===$valint3) ? ('TRUE') : ('FALSE') ; print " TEST 5 : " . $res . "
\n"; $res = ($valint3===$valfloat3) ? ('TRUE') : ('FALSE') ; print " TEST 6 : " . $res . "
\n"; $res = ($valstr3===$valint3) ? ('TRUE') : ('FALSE') ; print " TEST 7 : " . $res . "
\n"; $res = (($valfloat1+$valfloat2)===$valfloat3) ? ('TRUE') : ('FALSE') ; print " TEST 8 : " . $res . "
\n";

Поддержка COM в Windows

На Windows платформах, PHP4 обеспечивает поддержку COM компонентов. Это означает, что практически любые Windows приложения могут управляться из PHP4. COM модель, которая лежит в основе Microsoft архитектуры такова, что любое Windows приложение может предоставить такое количество компонентов и открытых методов, сколько существует точек входа для управления приложением из других приложений.

Возможно, несколько строк кода будут более полезны, нежели долгие объяснения. Рассмотрим следующий пример. Данный код запускает Word, создает в нем новый документ, добавляет текст в этот документ, затем сохраняет все на диск и выходит.

Version}\n
"; $word->Visible=1; $word->Documents->Add();.$word->Selection->TypeText("This is a test..."); $word->Documents[1]->SaveAs("test_com_php.doc"); $word->Quit(); ?>

Отображение фрагментов HTML кода

Еще одно нововведение в PHP4. Это новый синтаксис, повторяющий "here printing" из Perl. Теперь есть возможность отображать целые фрагменты HTML кода, обрамляя их инструкциями echo или print и оконечной меткой. В отличии от Perl, в PHP4 такой оператор обозначается не двойным знаком меньше (<<), а тройным (<<<). В качестве примера:


/n"; print <<< mylabel

PHP's New Features

.
    .
  • ISAPI support.
  • COM support on Win32.
  • Java and servlets support.

$valstr
Tested on PHP version $version

..mylabel; echo "

/n"; .?>

Поддержка Java

Поддержка Java является, без сомнения, одним из тех новых свойств, которые открывают возможность для PHP4 использовать уже существующие системы и приложения. С помощью PHP4, можно использовать Java сервлеты (servlet) и классы.

Поддержка Java не является встроенной возможностью в PHP4; необходимо добавить и сконфигурировать дополнительное расширение. Чтобы иметь возможность использовать поддержку Java под Linux, надо перекомпилировать PHP4 с определенными опциями. Также существует такое расширение для Windows в виде уже откомпилированного модуля. Эти расширения можно найти на официальном сайте PHP. При этом надо выбрать, какую версию Java вы будете использовать (JDK 1.1.8, 1.2, 1.3). В последующих примерах используется JDK 1.1.8.

В файле php.ini вы должны добавить две строчки в новый раздел ?Java?:

[java].java.class.path="c:jdk1.1.8libclasses.zip;.C:Program FilesApachecgi-binphp_java.jar;.C:Program FilesApachehtdocsphpjava" extension=php_java.dll

Вы можете затем убедиться, что сконфигурировали все правильно. Выполнив команду phpinfo() должны увидеть нечто подобное:

Затем, поместите Java классы, которые вы собираетесь использовать, в одну из директорий указанных директивой java.class.path. К примеру, в c:Program FilesApachehtdocsphpjava.

Представьте, что у вас есть Java класс, называющийся Point и описывающий точку: ее координаты, различные необходимые методы (конструктор, традиционные методы установки и получения свойств, метод toString).

public class Point {

// attributes
public int abscissa;
public int ordinate; 

public int type;

// default constructor
public Point() {
  setCoordinates(0,0);
  this.type = 1 ;
}
// constructor
public Point(int x,int y) {
   setCoordinates(x,y);
   this.type = 1 ;
}
// Overloaded object method
public toString String(){
   // Call the display method
   return display();
}
// Point class methods
public void setType(int mytype){
   // Call the display method
   this.type = mytype;
}
public int getAbscissa() { return abscissa; }
public int getOrdinate() { return ordinate; }
public void setCoordinates(int abscissa, int ordinate) {   this.abscissa = 
abscissa;
  this.ordinate = ordinate;
}
public sayHello String() {
  return "I am a point :-)";
}
public display String(){
return "("+abscissa+","+ordinate+" Type "+type+")";
} 
} 

Итак, ели все сконфигурировано правильно и файл Point.class находится в нужном месте, мы можем выполнить следующий PHP код:

Point created at (0,0) ..."; echo $myPoint->setCoordinates(15,15);. echo "
Point moved to (15,15)";. echo "
".$myPoint->display();. echo "
".$myPoint->sayHello();. echo "


\n"; .?>

В результате вы получите:

Point created at (0,0) ....Point moved to (15,15).(15,15 Type 1).I am a Point :-)

Выводы

Четвертая версия PHP ? это больше, чем просто модернизация. Это новая реализация, которая повлекла за собой полное переписывание кодов разработчиками: Zeev Suraski, Andi Gutmans и др. Теперь существует бесплатное качественное решение, которое может применяться в крупных профессиональных приложениях.

Перевод: Сергей Каличев




Комментарии

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Web - программирование / PHP /

GTK+: перспективы развития
02-03-2010   

Библиотека GTK+ прошла долгий путь развития и сейчас очень популярна. GNOME, одна из ведущих оконных сред, использует GTK+ почти исключительно, GIMP построен на GTK+, множество коммерческих разработчиков ПО, таких как Abobe, NVidia и VMware, решили использовать эту библиотеку в качестве графической основы для своих продуктов... подробнее

Кол. просмотров: общее - 5931 сегодня - 1

Новостной портал
13-11-2009   

Slashdot.org – популярный новостной портал с посещаемостью 50 млн. человек в месяц. Авторы проекта добились такого успеха, предоставляя пользователям свежие и интересные новости из мира IT... подробнее

Кол. просмотров: общее - 6096 сегодня - 1

Параллельное выполнение скриптов может нарушить целостность информации в файлах
13-11-2009   

Здесь рассматривается вопрос, что бывает, если запустить некий скрипт почти одновременно (что происходит, например, при большой нагруженности сервера) несколько раз, т.е. запустить несколько копий одного и того же скрипта. И к чему это может привести... подробнее

Кол. просмотров: общее - 5570 сегодня - 1

No spam.php
10-11-2009   

...и снова о спаме. Кто о нем только не писал, и все писали, что это плохо и ай-яй-яй. Я не буду оригинальничать, и тоже скажу – это плохо. Это ай-яй-яй. Как бороться со спамерами со своей стороны... подробнее

Кол. просмотров: общее - 5625 сегодня - 1

Начинаем работу с рисунками в php для Windows
10-11-2009   

Эта статья даст вам общее представление о том, как создавать, обрабатывать и выводить рисунки в PHP4 для Windows... подробнее

Кол. просмотров: общее - 5605 сегодня - 0



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects