Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Интернет технологии -> PHP -> Что нового в PHP4?


Что нового в 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.8\lib\classes.zip;.C:\Program Files\Apache\cgi-bin\php_java.jar;.C:\Program Files\Apache\htdocs\phpjava" extension=php_java.dll

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

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

Представьте, что у вас есть 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 и др. Теперь существует бесплатное качественное решение, которое может применяться в крупных профессиональных приложениях.

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

 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.