1.2. Преимущества и недостатки РНР
Рассмотрим все особенности PHP и выясним, почему многие считают, что PHP — именно то, что нужно.
Преимущества РНР
• PHP — скрипт-язык, который непосредственно встраивается в HTML-код и выполняется сервером. Приведем пример, демонстрирующий саму работу и способ встраивания PHP-скрипта в документ.
Пример 1.1. Встраивание РНР в документ
<html>
<head>
<title>Listing 1.1</title> </head>
<body>
<?php echo "Hello! My script works good!"; ?>
</body>
</html>
Опишем каждую строку данного документа, чтобы у вас не возникало никаких вопросов. Открывающий тег <html> показывает браузеру, что данный файл содержит HTML-страницу. Весь документ заключен в контейнер HTML. Текст, помещенный вне этого документа, может игнорироваться браузером. <title>Listing 1.1</title> задает название документа, которое может быть любым, по желанию программиста. Эти теги располагаются между тегами <head> </head>, которые содержат информацию о текущем документе, такую как заголовок, ключевое слово и т. п. Браузеры не отображают информацию, помещенную в контейнер <head>, однако могут ее использовать для каких-либо иных целей. Контейнер <body> охватывает все содержимое документа, которое должно быть представлено пользователю. Именно в этой части вставлен PHP-скрипт. Функция echo "Hello! My script works good!"; выведет в окно браузера фразу, заключенную между двойными кавычками. После выполнения скрипта получим страницу с надписью (рис. 1.2).
Рис. 1.2. Результат выполнения программы
ВНИМАНИЕ
Каждый оператор в РНР отделяется точкой с запятой. Это очень важно, так как в противном случае браузер выдаст сообщение об ошибке, указывающее номер строки, в которой она произошла.
• Основное отличие РНР от CGI-скриптов, написанных надругих языках, типа Perl или С++, — этого, чтов CGI-программах вы сами пишете выводимый HTML-код, а используя РНР, встраиваете свою программу в готовую HTML-страницу при помощи открывающего и закрывающего тегов (см. пример 1.1— <?php и ?>).
• Отличие РНР от JavaScript состоите том, что PHP-скрипт выполняется на сервере, а клиенту передается результат работы, тогда как JavaScript-код полностью передается на клиентскую машину и только там выполняется.
• Любители Internet Information Server найдут, что РНР очень похож HaActive Server Pages (ASP), а энтузиасты Java скажут, что РНР похож на Java Server Pages (JSP). Все три языка позволяют размещать код, выполняемый на Wеb-сервере, внутри HTML-страниц.
• В РНР включена поддержка многих баз данных, что делает написание Web-приложений с использованием БД до невозможности простым.
Вот неполный перечень поддерживаемых БД:
Adabas D, InterBase, Solid, dBase, mSQL, Sybase, PostgreSQL, Empress, MySQL, Velocis, File Pro, Oracle, Unixdbm, Informix.
СОВЕТ
Приведенный список далеко не полный. Это говорит о том, что сам язык ориентирован на работу с базами данных. Он имеет достаточное количество функций для реализации поставленных задач. Поэтому, если у вас возникнет вопрос, что выбрать — Perl, PHP или С при реализации той или иной задачи, связанной с базами данных, лучший выбор — РНР.
• В РНР есть функции для работы с протоколами IМАР, SNMP, NNTP, РОР3 и даже HTTP, а также имеется возможность работать с сокетами (sockets) и общаться по другим протоколам.
Недостатки РНР 3
Как правило, медаль имеет две стороны. В данной книге мы бы хотели подойти к РНР не только с положительной стороны, но и с критической. Даже самые лучшие системы имеют свои недостатки, которые со временем устраняются. И это нормально, нет необходимости считать ту или иную операционную систему несостоявшейся, если только в какой-либо функции при написании программы не было предусмотрено той или иной ситуации. Поэтому хотелось бы поговорить и об отрицательных качествах РНР.
• Основным недостатком РНР 3, является то, что по своей идеологии РНР изначально был ориентирован на написание небольших скриптов. Несмотря на то что ядро несколько раз переписывалось, РНР 3 не пригоден для использования в сложных проектах — при исполнении больших скриптов производительность системы резко падает. Однако этот недостаток ликвидирован в РНР 4.
• РНР является псевдокомпилируемым языком и вследствие этого не может сравниться по скорости с компилируемым С. Однако при написании небольших
программ, когда весь проект состоит из многих небольших страниц с кодом, вступают в силу накладные расходы на загрузку в память и вызов мы, написанной на С.
• Не такая большая база готовых модулей, как, например, CPAN у Perl. С этим ничего нельзя поделать — это дело времени. В РНР 4 разработчики предусмотрели специальный репозиторий, аналогичный CPAN, и очень скоро будет написано достаточное количество модулей для его наполнения.
Заключение
В этой главе было подробно описано, почему РНР является наиболее перспективным языком и в скором времени займет лидирующую позицию среди подобных языков программирования. Когда посетитель обращается к вашей страничке, РНР обрабатывает встроенные в нее команды, выдает результат браузеру пользователя — точно так же, так это делает CGI-программа, написанная на С или Perl. Только в отличие от последней РНР имеет ряд преимуществ:
• создание скриптов РНР значительно проще, чем создание скриптов на других языках;
• для решения разных специфических задач не нужно писать и отлаживать многочисленные маленькие CGI-программы, что сводит к минимуму время доступа к вашим а также продолжительность разработки страниц и сайта вцелом.
Вместе с тем РНР обладает огромным набором функций и большой которые могут быть значительно расширены с помощью дополнительных внешних библиотек. Вы можете управлять доступом к вашим страницам, создавать и обрабатывать базы данных любой сложности, генерировать изображения или PDF-документы т. д.