Язык PHP
![](image/jazyk-php_1.jpg)
PHP означает Препроцессор гипертекста PHP. Это серверный язык программирования, созданный специально для динамических страниц Web. Язык был первоначально разработан в 1994 г. Расмусом Лердорфом и был с тех пор расширен, чтобы стать одним из наиболее популярных языков сценариев WWW. Согласно статистике Netcraft в 2005 г. PHP использовался более чем 23000000 доменов. Подобно другим типам серверных языков, таких, как ASP, ASP.NET и JSP, код PHP обрабатывается на сервере Web и создает код XHTML или другой вывод, который можно увидеть в браузере. В отличие от других серверных языков, PHP является продуктом с открытым исходным кодом — это означает, что каждый имеет доступ к исходному коду и может использовать, изменять и распространять его полностью бесплатно.
Текущая версия PHP, рассматриваемая в учебнике, имеет номер 5. Этот учебник, несомненно, не является полным изложением языка PHP. Он должен только продемонстрировать некоторые наиболее широко используемые свойства и приложения PHP.
Систему PHP5 можно применять практически с любым типом операционной системы и сервера Web. Однако, чтобы сценарии PHP были обработаны, должен быть установлен интерпретатор PHP. Это программное обеспечение доступно в двух формах – полный исходный код и исполняемые двоичные файлы. Большинство систем Linux поставляются с исходным кодом PHP. Для систем, отличных от Unix/Linux, двоичные файлы можно загрузить по адресу http://www.php.net/downloads.php.
Дополнительную информацию о PHP можно найти на сайте http://www.php.net.
Контекст разработки Web
Многие люди являются "авторами" страниц Web, немногие являются "разработчиками" сайтов Web. Возможно, вы также присоединитесь к сообществу разработчиков.
Модель доставки информации
При функционировании в качестве системы доставки информации деятельность по разработке Web — достаточно простая и прямолинейная. Прежде всего, информационное содержимое вводится в документ, который со временем станет страницей Web. Это содержимое окружается специальными кодами компоновки и форматирования Языка разметки гипертекста (HTML) — в последнее время Расширяемого языка разметки гипертекста (XHTML) – для управления его структурой и представлением в браузере Web.
Затем документ сохраняют на компьютере сервера Web для ожидания публичного доступа. Пользователи обращаются к документу, вводя в окне своего браузера адрес Web-документа. Этот адрес, называемый URL, или Единообразный локатор ресурса, определяет сайт, где хранится страница, и расположение ее каталога на сервере Web. Этот сервер, в свою очередь, извлекает страницу и посылает ее браузеру, который интерпретирует код HTML и выводит документ на экране компьютера.
Существуют определенные последствия построения доступа к Web на модели доставки информации и в следовании традиционному процессу разработки Web. Прежде всего, информационное содержимое страницы Web "фиксируется" или "замораживается" в определенном месте. Оно становится встроенным и тесно связанным с кодами форматирования XHTML, которые его окружают. В связи с этим становится трудно изменять содержимое страницы, не переписывая и не редактируя его форматы представления. Поэтому затрудняется сохранение актуальности страниц, особенно если содержимое постоянно изменяется.
В то самое время авторам страниц Web зачастую необходимо быть знакомым с кодированием XHTML. Даже при использовании визуальных инструментов, таких, как FrontPage или Dreamweaver, автору может понадобиться специалист по кодированию, чтобы страница выглядела требуемым образом. "Эксперту" Web часто также бывает необходимо работать в тесном контакте с поставщиком контента, обеспечивая технические навыки для сопровождения страниц.
Для пользователей также имеются ограниченные возможности взаимодействия с традиционными страницами Web. Пользователь часто выступает в роли пассивного читателя контента, для которого сервер Web действует в качестве простого электронного "переворачивателя страниц". Поэтому сайт Web, создаваемый вокруг модели доставки информации, может стать статическим, пассивным хранилищем устаревшей информации. Страница Web рискует стать историческим архивом, а не своевременным, быстро реагирующим источником точной, самой свежей информации.
Модель обработки информации
Чтобы преодолеть это статическое, пассивное использование Web, возникает необходимость рассматривать Web не просто как систему доставки информации, но как полнофункциональную систему обработки информации. Это означает, что сама система Web и составляющие ее сайты и страницы необходимо воспринимать как механизмы для выполнения полного набора действий по вводу, обработке, выводу и хранению, требуемых для создания динамического, активного контента, – короче, для обеспечения основных функций системы обработки информации.
![](image/model-obrabotki-informacii_2.jpg)
Рис. 1.2. Функции системы обработки информации
В модели информационной обработки четыре базовые функции ввода, обработки, вывода и хранения имеют специфическое значение.
Функция ввода позволяет пользователям взаимодействовать с системой, запрашивая параметры обработки, управляя информационным доступом и определяя методы доставки. Кроме того, пользователь может стать источником данных, которые обрабатывает система и которые она поддерживает в своих репозиториях хранимой информации. Функция обработки относится к деятельности по манипуляции данными и логике обработки, необходимых для выполнения работы системы. Этот термин предполагает, что система может "программироваться" для выполнения арифметических и логических операций, необходимых для манипуляции данными ввода и для создания выводимой информации. Функция вывода доставляет результаты обработки пользователю в правильном, своевременном и соответствующим образом форматированном виде. Функция хранения гарантирует продолжительность существования и целостность обрабатываемой информации, поддерживая ее в течение длительного периода времени и позволяя добавлять, изменять или удалять систематическим образом. В конечном счете, хранимая информация становится основным контентом страниц Web, отражая самую современную и точную информацию, появляющуюся на этих страницах.
С точки зрения обработки информации сама сеть Web функционирует как гигантская открытая компьютерная система, и фактически такой и является. Деятельность по обработке информации происходит на различных аппаратных и программных компонентах, расположенных в одном месте или разбросанных по всему миру.
При принятии модели обработки информации можно начинать применять технологию Web для создания сайтов Web, которые являются действительно динамичными, интерактивными и современными – сайты Web, на которых информационный контент всегда самый современный, персонализирован в соответствии с потребностями пользователя, автоматически изменяется в ответ на запросы пользователя, и когда изменяется сама информация, пользователь может взаимодействовать со страницей Web, добавляя или изменяя информацию в системе. Дополнительное преимущество состоит в том, что сайты можно создавать таким образом, что не потребуется постоянно переписывать или переформатировать страницы Web. Сами страницы изменяются динамически, отражая изменение информации или изменение предпочтений пользователей.
Модели систем Web
Исторически Всемирная паутина WWW функционировала просто как "система доставки информации". Люди привыкли использовать ее для сбора информации по всевозможным вопросам, для которых миллионы сайтов Web предоставили доступ. Однако со временем Web стала чем-то большим, чем просто электронной библиотекой информации. Она стала платформой коммуникации, информации и транзакций, на которой реализуется экономическая, социальная, политическая, образовательная и культурная деятельность.
На основе Web
Термин "на основе Web" относится к тому факту, что системы обработки информации полагаются на технологию Интернет, в частности, на так называемую Всемирную паутину (WWW). Поэтому системы на основе Web действуют в технологических рамках со следующими характеристиками.
Первое: системы действуют в публичных, а не в частных сетях данных. Они осуществляют коммуникацию через Интернет, т.е. через распространенные по всему миру, взаимосвязанные сети компьютеров, которые являются публично доступными.
Второе: коммуникационные сети основываются на открытых и публичных технических стандартах, таких, как архитектуры Ethernet, протоколы передачи TCP/IP и протоколы приложений HTTP и FTP. Они не являются частными или патентованными стандартами, но являются принципиально открытыми и свободными для публичного использования.
Третье: системы обработки на основе Web используют широко распространенное, часто бесплатное, программное обеспечение для разработки и работы. Деятельность по обработке происходит с помощью браузеров Web, а не специально написанного программного обеспечения для интерфейса пользователя и для внешнего сбора данных и обработки. Браузеры Microsoft Internet Explorer, Mozilla Firefox, Opera, Netscape Navigator и другие являются средством взаимодействия пользователей с системами обработки информации. Также широко распространенные компьютеры серверов Web выполняют основные функции бизнес-обработки, а серверы баз данных обеспечивают хранение информации, доступ к ней и извлечение.
Поэтому общедоступные, не являющиеся специализированными, не являющиеся патентованными оборудование и системы программного обеспечения предоставляют техническую среду для разработки систем обработки информации и для управления этой деятельностью.
Навыки разработки Web
Разработка Web относится к использованию технологий Web для создания клиентских и серверных компонентов обработки, к интеграции их в качестве приложений в системах обработки интранет, интернет или экстранет, и к развертыванию их в Web для реализации частной и публичной деятельности организаций. Набор навыков для реализации этих задач простирается далеко за пределы способности сохранить страницы Web из программы текстового процессора, за пределы создания простого сайта Web с помощью буксировки в программном пакете настольного компьютера или даже за пределы жестко закодированных с помощью XHTML страниц c вкраплениями подключаемых модулей.
При окончательном анализе разработчику Web необходимо проникновение в сущность операционных и управленческих процессов организации, понимание того, каким образом производственные процессы создаются и опираются на информационные потоки при производстве товаров и услуг, и способность абстрагироваться и моделировать эти бизнес системы на доступном оборудовании и программных технологиях, а также навыки использования этих технологий для создания систем на основе Web, которые реализуют эти модели.
Один учебник не может вместить все это. Он может, однако, предоставить основные знания и навыки для решения существующих проблем и использования возможностей, сопровождающих системы обработки на основе Web. Он охватывает основные технические средства для интеграции клиентского и серверного оборудования и программного обеспечения для создания систем по сбору, обработке, управлению и распространению информационного содержания, которое оживляет современные организации. Попутно вы получите надежное понимание той критической роли, которую системы на основе Web могут играть в создании операционного и управленческого успеха различных организаций.
Присваивание функций компонентам
Возвращаясь к понятию трехслойной, клиент/серверной системы, посмотрим, как аппаратные компоненты, программные компоненты, и функции обработки связаны друг с другом с точки зрения обработки информации. Вспомните, что аппаратные компоненты в трехслойной среде состоят из компьютера клиента Web (настольного ПК), компьютера сервера Web, и сервера базы данных. Каждый из этих трех аппаратных компонентов выполняет соответствующее программное обеспечение. Теперь можно отобразить функции обработки информации на эти три слоя оборудования/программ.
![](image/prisvaivanie-funkcij-komponentam_1.jpg)
Рис. 1.3. Функции системы обработки информации, отображенные в трехслойную систему клиент/сервер
Все функции ввода и вывода попадают в основном в клиентскую машину Web. Такая деятельность интерфейса пользователя, как ввод данных, проверка данных, управление обработкой и форматирование вывода, выполняются на клиенте Web.
Основная деятельность по обработке информации падает на сервер Web, называемый иногда сервером приложений Web. Здесь программируются арифметические и логические процедуры для выполнения задач системы по бизнес обработке.
Наконец, хранение данных и функции доступа выполняются на сервере базы данных. Этот компонент управляет хранением информации и функциями извлечения, необходимыми для выполнения бизнес-обработки, и позволяет осуществлять долгосрочное обслуживание хранимой информации посредством добавления, изменения и удаления файлов и баз данных.
Как можно видеть на иллюстрации, системные функции "передаются" различным отдельным компонентам, хотя все они действуют совместно, как интегрированные системы различных видов деятельности. Основная идея заключается в том, что специализированные компоненты выполняют специализированную работу, для которой они лучше всего подходят. Справедливо также то, что системные функции "не привязаны к месту". То есть деятельность ввода, обработки, вывода и хранения могут происходить там, где расположены компоненты. Они могут быть заключены в одной машине на одном рабочем столе, распределены между двумя или несколькими машинами в отделе или компании либо широко разбросаны по всему земному шару. Во всех этих случаях используемые технологии и методы являются практически одинаковыми, делая достаточно рутинной разработку приложений Web для любой физической или географической среды, с которой столкнется разработчик.
Программное обеспечение учебника
В этом учебнике представлено основное подмножество инструментов, необходимых для создания динамических, интерактивных сайтов Web. На стороне браузера применяются и описываются XHTML, CSS, JavaScript для редактирования данных, и динамический HTML. В качестве языка сценариев сервера используется PHP. Также описываются встроенные функции PHP, необходимые для выполнения функций ввода, обработки, вывода и хранения. На стороне базы данных представлены примеры для Microsoft Access, и описаны основные принципы использования языка SQL.
Даже при отсутствии достаточного доступа к этим технологиям, необходимо уметь следовать инструкциям и начать создавать свои собственные динамические приложения Web. Необходимо, конечно, разбираться в программировании: разработчик Web, прежде всего, является программистом. Предполагается, что читатель хорошо знаком с Visual Basic. Необходимо также иметь навыки работы с XHTML и быть знакомым с каскадными таблицами стилей.
Разработка приложений Web
Рассмотрение Web как трехслойной, клиент/серверной системы обработки информации имеет важные последствия для разработки приложений Web. Вчерашний "создатель страницы Web" становится сегодня "разработчиком системы Web". Теперь недостаточно иметь пакет разработчика, состоящий из редактора WYSIWYG и базовых навыков XHTML. Необходимо стать широко образованным в более разнообразном множестве технологий. Внизу на следующей расширенной схеме трехслойной системы указаны некоторые навыки и инструменты, необходимые для проектирования и программирования систем на основе Web, которые обслуживают деятельность по обработке информации.
![](image/razrabotka-prilozhenij-web_1.jpg)
увеличить изображение
Рис. 1.4. Навыки разработки Web, требуемые для создания трехслойных клиент/серверных приложений на основе Web
Разработка Web
"Разработка" Web, в противоположность "созданию" страниц Web, выходит далеко за пределы использования кодов разметки и нескольких подключаемых модулей или метода сценариев для создания привлекательных или информативных страниц Web. Этот термин относится к использованию специальных стратегий, инструментов и методов для создания страниц Web и сайтов Web, характеризуемых как трехуровневые, клиент/серверные системы обработки информации. Давайте рассмотрим эти термины более подробно, чтобы понять разнообразие задач, для которых разрабатываются страницы и сайты Web.
Системная обработка
На стороне сервера Web необходимо иметь возможность писать приложения для выполнения основных задач системы по обработке. Для кодирования этих процедур используются серверные языки, такие, как PHP. С одной стороны, эти языки применяются как полноценные языки программирования для кодирования арифметических и логических операций обработки, с другой — они используют встроенные компоненты серверной обработки для выполнения основных и вспомогательных задач системы. PHP является широко распространенным языком сценариев общего назначения, который особенно хорошо подходит для разработки Web и может встраиваться в XHTML.
Системный ввод и вывод
Так как функция интерфейса пользователя осуществляется через браузер Web, выполняющийся на клиентском ПК, необходимо использовать инструменты разработки приложений, которые позволяют программировать браузер для выполнения задач форматирования вывода, ввода данных и проверки данных. Для этого требуются, конечно, языки разметки, такие, как XHTML и CSS (Каскадные таблицы стилей), для структуризации и представления системного ввода и вывода. Растет важность расширений языков разметки, например, DHTML (Dynamic HTML) для взаимодействия пользователей со страницей Web и XML (Расширяемый язык разметки) для представления структур данных, которые доставляются сервером для обработки в браузере. Также основным языком программирования для браузера является JavaScript, который используется для манипуляции языками разметки и структурами данных для выполнения задач браузера по обработке.
Системы интернет
Системы интернет являются публичными информационными системами. Они включают в себя публичные сайты, которые предоставляют новости, информацию, и развлечения; сайты электронной коммерции для маркетинга и продажи продуктов и услуг; правительственные сайты для информирования или обслуживания широкой публики; и образовательные сайты для предоставления локального и удаленного доступа к образованию и знаниям. Всем частям общества публичные системы интернет предоставляют товары, услуги и информацию посредством Всемирной паутины WWW и связанных с ней сетей и услуг.
Системы интранет
Системы интранет являются частными, внутренними системами, помогающими выполнять повседневную обработку информации, управленческо-информационную и производственную деятельность организаций. Системы интранет на основе Web обслуживают стандартные внутренние функции бизнеса, оказывая тем самым влияние на основные организационные системы, такие, как бухгалтерский учет и финансовая отчетность, маркетинг и отдел продаж, системы закупок и сбыта, производственные системы, системы трудовых ресурсов и другие. Со временем системы интранет на основе Web станут основными техническими средствами, посредством которых будет осуществляться внутренняя деятельность организаций по выполнению бизнес-процессов.
Системы экстранет
Системы экстранет являются системами бизнес-для-бизнеса (B2B), которые управляют электронным обменом данными (EDI) между деловыми предприятиями. Эти системы обеспечивают информационный поток между организациями – между компанией и ее поставщиками и между компанией и ее сбытовыми организациями – чтобы помочь в координации последовательности закупки, производства и распространения. Электронный обмен данными помогает исключить бумажный поток, сопровождающий бизнес-транзакции, используя технологии Web для пересылки электронных документов между компьютерами, а не между людьми.
Как системы на основе Web приложения EDI устраняют трудности передачи информации между различными программными и аппаратными платформами с изначально различными информационными форматами и различными протоколами обмена информацией.
Web становится основным технологическим базисом, электронной магистралью для сбора информации, обработки и распространения во всех типах организаций – в коммерческих и финансовых предприятиях, образовательных учреждениях, правительственных агентствах, учреждениях здравоохранения, агентствах новостей и отрасли развлечений и в большинстве других формальных организаций, как больших, так и маленьких. Это всепроникающая технология для разработки систем работы с информацией во всех частях общества.
Системы обработки информации
Технологии Web используются не только для создания персональных или рекламных сайтов Web, содержащих информативный, интересный или развлекательный материал для публичного потребления. Скорее они становятся важным средством поддержки фундаментальных "бизнес-процессов" современных организаций — поддерживающие операционные и управленческие функции. Технические инфраструктуры поддержки этих задач упрощенно делятся на три типа систем на основе Web, называемых системами интранет, интернет и экстранет.
Создание страницы Web
Сегодня создание страницы Web является не слишком трудной задачей. Многие стандартные программные пакеты персональных компьютеров обладают встроенными средствами для преобразования документов текстовых процессоров, электронных таблиц, баз данных и т.д. в специально кодированные документы, которые могут быть доступны в Web. Специальные пакеты для создания страниц Web, такие, как Microsoft FrontPage и Macromedia Dreamweaver, позволяют легко создавать страницы Web с помощью технологии буксировки. В большинстве таких случаев даже не нужно знать о существовании специального языка кодирования HTML (язык разметки гипертекста), который неявно все это обеспечивает.
Если вы знаете язык XHTML, то страницы Web можно создавать с помощью простого текстового редактора, получая в этом случае значительно больше контроля над их структурой и форматированием, чем это возможно с помощью методов буксировки. Кроме того, появляется возможность легко интегрировать существующий код XHTML, апплеты Java, встраиваемые модули мультимедиа и языки сценариев браузера, чтобы создать на странице некоторое взаимодействие с пользователем. Независимо от содержания или привлекательности страниц, их назначение обычно ограничено представлением интересного или информативного текста и графики для персонального потребления. Маловероятно, что кто-то будет заниматься задачей создания основной бизнес-системы с помощью HTML и нескольких подключаемых модулей.
Трехслойная, клиент/серверная архитектура
Термин "клиент/сервер" относится к применению сетей на основе серверов для управления общим доступом к ресурсам и для распределения задач между аппаратными и программными компонентами. В клиент/серверных сетях на основе Web распределение задач обработки происходит в трех слоях, которые соответствуют трем основным компонентам оборудования/программного обеспечения системы.
![](image/trehslojnaja-klient-servernaja-arhitektura_2.jpg)
Рис. 1.1. Аппаратные и программные слои трехслойной системы обработки информации
В первом слое (Tier 1) клиентский настольный ПК выполняет работу интерфейса пользователя системы; во втором слое (Tier 2) сервер Web выполняет основные функции системы по обработке; и в третьем слое (Tier 3) сервер базы данных, и в некоторых случаях медиа-сервер, осуществляет требуемые системе функции хранение и извлечения информации.
В свою очередь, каждый из трех аппаратных компонентов содержит соответствующее программное обеспечение. Клиентским программным обеспечением является браузер Web. Сервер Web выполняет сетевую операционную систему (NOS), такую, как Windows Server, Unix Server или Linux Server, и с помощью дополнительного программного обеспечения, например, Internet Information Server или Apache Web Server, реализует службы Интернет, — WWW, FTP, SMTP mail и другие. Сервер базы данных выполняет систему управления базой данных (DBMS), такую, как MySQL, Oracle, Access и другие популярные пакеты. Таким образом, отдельные компоненты выполняют отдельные задачи обработки, которые интегрируются с помощью Web в законченную систему обработки информации.
Рассмотрим, например, посещение Web-сайта е-коммерции, например, Amazon.com. Браузер Web является интерфейсом с сайтом. В ответ на различные "входящие" запросы, которые вы отправляете при просмотре продаваемых товаров, создаются различные страницы "вывода". Запросы вводятся в систему через ссылки Web и посылаемые формы, ответы системы создают страницы HTML, передаваемые назад браузеру для вывода на экране. Браузер выполняет действия по вводу и выводу, необходимые для взаимодействия с сайтом.
За сценой на сервере Web решаются специальные задачи по обработке информации. Когда, например, делается запрос по поиску книги, выполняются программы поиска в базах данных для извлечения подходящих книг и для форматирования вывода для доставки в браузер Web. При просмотре корзины покупателя другие процедуры извлекают выбранные товары и вычисляют общую стоимость заказа. При оплате заказа исполняются специальные программы для соединения с системой проверки кредитной карты и банковскими системами, так что соответствующие счета дебетуются и кредитуются. Множество задач обработки, связанных с перемещением в сети и покупкой, происходят на серверах Web скрыто от пользователя, но они критически важны для осуществления покупки и для осуществления бизнес-транзакций, которые с этим связаны.
Большая часть информации, которая собирается и генерируется во время покупки, хранится в базах данных, которые находятся на отдельных серверах баз данных. Вся информация, которая выводится на экран, извлекается из таблиц базы данных. Выбранные товары хранятся в таблицах базы данных. Практически каждый фрагмент информации о просматриваемых продуктах и транзакциях при покупке сохраняется в больших базах данных в самой системе е-коммерции или в связанных базах данных, которые находятся в центре окружающих ее систем бухгалтерского учета, закупок и дистрибуции.
Даже в самых маленьких коммерческих системах на основе Web присутствуют такие же функции. Браузер Web предоставляет интерфейс пользователя с системой, специальные страницы обрабатывают бизнес транзакции, а одна или несколько баз данных поддерживают информацию, перемещающуюся в системе. Главное состоит в том, что в системах на основе Web любого размера существуют три основных слоя функциональности. Поэтому, с точки зрения разработчика Web, задача состоит в создании трех отдельных компонентов – интерфейса пользователя, процедур обработки бизнес-операций, и компонентов поддержки базы данных — и последующей интеграции в полностью функциональную систему обработки информации.
Управление базой данных
На стороне сервера базы данных такие языки, как SQL (Язык структурированных запросов), выполняют функции сохранения данных, их обслуживания и доступа. Кроме того, языки программирования базы данных используются для кодирования командных процедур, которые являются функциями обработки, хранимыми в базах данных, для извлечения, обновления и создания отчетов о содержимом баз данных. Серверные языки могут вызывать эти встроенные процедуры баз данных для выполнения соответствующей обработки, а не кодировать их непосредственно. Все большую важность в хранении данных и электронном обмене данными приобретают структуры данных XML.
Иногда на разработку Web смотрят упрощенно с чисто технической точки зрения, забывая, что это является также разработкой системы. Разработчик должен понимать организационные структуры и процессы. Прежде всего, система на основе Web является бизнес-процессом. Если не понимать суть процессов, то маловероятно, что можно будет разработать системы для их реализации или поддержки. Разработка Web является также реализацией некоторой интеграции. Задача состоит в том, чтобы объединить совокупность оборудования, программного обеспечения, людей и процедур для выполнения некоторой деятельности. Поэтому системный подход является критически важным для соединения всех частей вместе во что-то функциональное, продуктивное, экономичное и дружественное. Наконец, разработка Web является в большой степени творческим предприятием. Очень часто работа состоит в разработке чего-то нового там, где ничего перед этим не существовало. Вместо следования директивам хорошо продуманных планов, ваше воображение создает эти планы, а художник внутри вас их воплощает. Управляемый полет фантазии хорошо служит разработке Web.
Разработчику Web требуется поэтому творческое воображение, организаторское чутье и обширный набор навыков для создания приложений Web, которые обслуживают потребности информационной обработки. Разработчик не обязан быть экспертом высокого уровня во всех языках и программных инструментах; но необходимо иметь хорошее представление об их использовании.
Комментарии в коде
Комментарии применяются в PHP для записи собственных замечаний во время процесса разработки кода. Такие комментарии могут определять назначение сегмента кода или их можно использовать для исключения блоков кода во время тестирования и отладки сценариев.
Синтаксический анализатор PHP игнорирует комментарии. Комментарии в PHP можно определить одним из следующих способов:
// — простой комментарий PHP;
# — альтернативный простой комментарий PHP;
/*...*/ — многострочные блоки комментариев.
<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Страница Web </title> </head> <body>
<p>
<?php
// Простой комментарий PHP # Другой тип простого комментария PHP
/* Многострочный блок комментария PHP Он может занимать любое необходимое количество строк */
?>
</p> </body> </html>
Соединение XHTML и PHP
Код PHP обычно объединяется с тегами XHTML. PHP является встраиваемым языком — это означает, что можно перемещаться между чистым кодом HTML и PHP, не жертвуя возможностью чтения текста.
Чтобы встроить код PHP в XHTML, PHP должен задаваться обособленно, с помощью начального и конечного тегов PHP. Теги PHP говорят серверу Web, где начинается и заканчивается код PHP. Анализатор PHP распознает три варианта начального и конечного тегов.
Стиль XML
<?php Блок кода PHP ?>
Первый вариант тегов PHP называется тегами в стиле XML и является предпочтительным стилем. Он работает в документах Расширяемого языка разметки (XML). Этот метод должен использоваться при соединении PHP с документами XML и XHTML. Примеры в этом учебнике применяют этот формат тегов XML.
Сокращенный стиль
<? Блок кода PHP ?>
Сокращенный стиль является самым простым, однако, он не рекомендуется, так как вступает в противоречие с объявлениями документов XML.
Стиль сценария (script)
<script language="php"> Блок кода PHP </script>
Этот стиль использует самую длинную запись и похож на стиль тегов, применяемых с JavaScript. Этот стиль является предпочтительным при использовании редактора HTML, который не распознает другие стили тегов. Так как большинство новых редакторов XHTML распознают стиль тегов XML, то использование этого стиля не рекомендуется.
Блоки сценария могут размещаться в любом месте документа XHTML, в том месте, где сценарий создает и показывает свой вывод. Следующий пример страницы XHTML иллюстрирует использование трех форматов тегов сценария.
<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Страница Web </title> </head> <body>
<p> <?php echo "Это базовый документ PHP";?> </p>
<p> <?print "PHP – это здорово!";?> </p>
<p>
<script language="php"> $myvar = "Hello World! "; echo $myvar; </script>
</p>
</body> </html>
В предыдущем примере три блока PHP включены в документ XHTML. Первый блок использует открывающий и закрывающий теги <?php ... ?>. Сегмент кода использует оператор PHP echo для вывода строки "Это основной документ PHP" в окне браузера.
Второй блок применяет теги <? ... ?> для пометки начала и конца кода PHP. Этот раздел применяет оператор PHP print (другое имя оператора echo) для вывода на экране текста "PHP – это здорово!".
Наконец, третий блок использует блок сценария <script language="php"> ... </script> для определения начала и конца кода PHP. В коде строка "Hello World" присваивается переменной $myvar, а оператор echo выводит значение $myvar в окне браузера.
Это базовая страница PHP.
PHP – это здорово!
Hello World
Пример показанного выше кода включает теги XHTML, теги PHP, операторы PHP и разделители. Когда пользователь запрашивает страницу PHP, сервер обрабатывает весь код PHP. Когда страница PHP просматривается в окне браузера, выводится только текст между открывающим и закрывающим тегами XHTML или PHP. Никакой реальный код PHP не виден при просмотре исходного кода в окне браузера. Причина в том, что интерпретатор PHP выполняет сценарий на сервере и заменяет код результатом вывода работы сценария. Только этот вывод передается браузеру. Это одна из характеристик, которая делает PHP серверным языком сценариев, в отличие от JavaScript, языка сценариев клиента.
Терминатор инструкции
Каждая строка кода PHP должна завершаться терминатором инструкции (признаком конца), в качестве которого используется точка с запятой (;). Терминатор инструкции применяется для отделения одного множества инструкций от другого.
Отсутствие терминатора инструкции может приводить к ошибкам в работе интерпретатора PHP и выводу ошибок в окне браузера. Следующий фрагмент кода показывает распространенную ошибку отсутствия терминатора инструкции.
<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Страница Web </title> </head> <body>
<p>
<?php
echo "Это строка порождает ошибку" echo "В предыдущей строке отсутствует терминатор инструкции";
?>
</p> </body> </html>
В этом примере в первом операторе echo пропущен терминатор инструкции. Так как интерпретатор PHP не может определить конец первого оператора echo и начало второго, то происходит ошибка. В зависимости от настроек Обработки ошибок (Error Handling) интерпретатора, будет выводиться сообщение об ошибке или браузер выведет просто пустую страницу.
Далее показано типичное сообщение об ошибке, которое выводится, когда пропущен терминатор инструкции:
Parse error: syntax error, unexpected T_PRINT in C:\ApacheRoot\test.php on line 11 Ошибка при разборе: синтаксическая ошибка, непредвиденный T_PRINT в ... в строке 11
Как можно видеть, сообщения об ошибках PHP достаточно загадочны по своей природе. Отсутствие терминатора инструкции является распространенной ошибкой среди новичков PHP. Со временем появится привычка проверять каждую строку на наличие терминатора инструкции.
Вывод контента
PHP содержит два основных оператора для вывода текста в браузере Web: echo и print.
Оба оператора, echo и print, кодируются между открывающим и закрывающим тегами блока кода PHP и могут находиться в любом месте в документах XHTML.
Операторы echo и print используют следующий формат:
echo – используется для вывода одной или нескольких строк.
echo "Выводимый текст"
print – используется для вывода строки. В некоторых случаях оператор print предлагает большую функциональность, чем оператор echo. Это будет рассмотрено далее в учебнике. Пока print можно считать другим именем оператора echo.
print " Выводимый текст"
Следующие примеры демонстрируют использование и размещение команд echo и print в документе XHTML.
<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Страница Web</title> </head> <body>
<p>
<?php echo "Это базовый документ PHP"; ?>
</p>
</body> </html>
В большинстве случаев необходимо выводить целые параграфы в окне браузера или создавать переносы строк при выводе контента. По умолчанию операторы echo и print не создают автоматические переносы строк, необходимо использовать тег <p> или <br> для создания параграфов или переносов строк. Разделители, создаваемые в редакторе XHTML с помощью возврата каретки, пробелов и табуляции, игнорируются процессором PHP.
В следующем примере тег параграфа XHTML включается в оператор PHP echo . В PHP теги XHTML можно применять в операторах print и echo для форматирования вывода. В этих случаях вывод необходимо заключать в двойные кавычки (""), чтобы гарантировать, что браузер не интерпретирует тег буквально и не выводит его как часть строки вывода.
echo "<p>Параграф 1</p>" echo "<p>Параграф 2</p>"
Без использования тега параграфа XHTML предыдущие операторы echo будут выводить контент в следующем виде:
Параграф 1 Параграф 2
При включении тегов параграфов операторы выводятся как два отдельных параграфа.
Параграф 1
Параграф 2
Ассоциативные массивы
Ассоциативные массивы позволяют использовать более полезные значения индекса. Для массивов с числовыми индексами значения индекса создаются автоматически, начиная с 0. Ассоциативные массивы допускают применение числовых и строковых значений индекса. Символ между индексом и значениями (=>) является знаком равенства, за которым сразу следует символ больше.
$members = array('FName' => John, 'LName' => Smith, 'Age' => 50)
В этом примере члены массива содержат три элемента, однако используются строковые индексы — FName, LName и Age.
$members['FName'] = 'John' //индекс FName соответствует элементу John $members['LName'] = 'Smith' // индекс LName соответствует элементу Smith $members['Age'] = '50' // индекс Age соответствует элементу 50
Для доступа к содержимому массива используется имя массива и индекс. Следующий код применяется для вывода значений переменной $members.
<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Страница Web </title> </head> <body>
<p>
<?php
$members = array('FName' => John, 'LName' => Smith, 'Age' => 50);
echo "The user's first name is: " . $members['FName']; echo "The user's last name is " . $members['LName']; echo "The user's age is " . $members['Age'];
?>
</p> </body> </html>
The user's first name is John The user's last name is Smith The user's age is 50
случайным образом перемешиваем элементы массива
<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Страница Web </title> </head> <body> <p> <?php //Созданы два массива $numbers = array(50,20,18,30,10,7); $colors = array('red', 'blue', 'green') // определяем размер массива $numbers — 6 $array_size = sizeof($numbers); // сортируем элементы массива $numbers – возвращает array(7,10,18,20,30,50) sort($numbers); // случайным образом перемешиваем элементы массива $numbers shuffle($numbers); // $merged_array возвращает array(7,10,18,20,30,50,'red','blue','green') $merged_array = array_merge($numbers,$colors); // вырезаем номера 18 и 20 из сортированного массива $numbers // $slice содержит array(18,20) $slice = array_slice($numbers, 2, 2); ?> </p> </body> </html> |
Пример 3.1. |
Закрыть окно |
Форматирование вывода валюты
Кроме вывода стандартного текста можно применять для вывода форматированного текста вариант конструкции print с именем sprintf. Оператор требует задания форматирующей строки и значения для форматирования.
sprintf("%01.2f", $var) - formats and prints the value of '$var' as currency.
Оператор sprintf показан ниже:
<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>A Web Page</title> </head> <body>
<p> <?php $amount = 35; $tax = 2.50; $total = $amount + $tax; echo "$" . $sprint("%01.2f", $total); ?> </p>
</body> </html>
Вывод валюты показан ниже:
$37.50
Функции даты и времени
Базовые функции PHP для даты и времени позволяют форматировать отметку времени для применения в запросах базы данных или просто для вывода даты и времени в окне браузера. PHP включает следующие функции даты и времени:
date(format) – возвращает текущее время сервера, форматированное согласно заданному множеству параметров format.
checkdate(month, day, year) – проверяет заданную дату. Успешная проверка означает, что год year находится между 0 и 32767, месяц month – между 1 и 12, и правильное количество дней каждого месяца.
time() – возвращает текущее время сервера, измеренное в секундах начиная с 1 января 1970 г.
Следующая таблица содержит допустимые форматы date():
a | выводит "am" или "pm" |
A | выводит "AM" или "PM" |
h | часы в 12-часовом формате (01 – 12) |
H | часы в 24-часовом формате (00 – 23) |
g | часы в 12-часовом формате без ведущего нуля (1 – 12) |
G | часы в 24-часовом формате без ведущего нуля (0 – 23) |
I | минуты (00 – 59) |
S | секунды (00 – 59) |
d | день месяца двумя цифрами (01 – 31) |
D | день недели текстом (Mon – Sun) |
l | день недели длинным текстом (Monday – Sunday) |
F | месяц длинным текстом (January – December) |
n | месяц двумя цифрами (1 – 12) |
Y | год четырьмя цифрами (2005) |
y | год двумя цифрами (05) |
s | порядковые английский суффиксы (th, nd, st) |
Следующая страница использует функцию PHP date() для определения и вывода текущего времени сервера и даты:
<?php echo "<span style='font:10pt arial'>Today is date('lFjY')</span>"; echo "<br/>"; echo "<span style='font:10pt arial'>The current time is: date('g:i:s a')</span>"; ?>
Формат даты/времени, выводимый с помощью функции date(), зависит от типов параметров формата, подставленных в функцию. Параметры функции date() можно объединять, разделяя запятой ",", двоеточием ":" или другими знаками пунктуации, в зависимости от желаемого формата вывода. Все параметры, однако, должны быть заключены в одиночные кавычки. В примере выше время выводится с помощью параметров формата времени g, i, s, и a. Двоеточия и пробелы также вставляют для разделения часов, минут, секунд и признаков am/pm.
Функции checkdate() и time() обычно используются в процессах принятия решений. Поэтому они подробнее будут рассмотрены в дальнейшем.
Функции для работы с массивами
Кроме функции array() система PHP включает множество других функций для работы с массивами. Следующий раздел описывает некоторые из наиболее часто используемых функций. Более обширный список доступен на Web-сайте PHP.
count() – функция count используется для подсчета числа элементов в массиве.
sort() – функция sort используется для сортировки элементов существующего массива.
shuffle() – функция shuffle используется для случайного перемешивания элементов в заданном массиве.
sizeof() – функция sizeof является синонимом (алиасом) функции count().
array_slice($array_name,offset, length) – функция array_slice используется для извлечения части существующего массива. $array_name является именем разрезаемого массива, offset указывает позицию, где будет начинаться разрез, length указывает число элементов, которое будет вырезано из массива.
array_merge($array_name, $array_name) – функция array_merge используется для объединения или слияния двух или большего количества существующих массивов. Имена массивов разделяются запятыми.
Следующий код показывает, как применяется каждая из функций для работы с массивами.
Пример 3.1.
(html, txt)
PHP включает также ряд предопределенных или глобальных массивов. Их называют также суперглобальными переменными, так как они всегда присутствуют и доступны для всех блоков сценария PHP. Ниже показаны обычно используемые суперглобальные переменные PHP.
$_GET[] $_POST[] $_REQUEST[] $_COOKIE[] $_FILES[] $_SERVER[] $_ENV[] $_SESSION[]
Суперглобальные переменные PHP будут описаны в дальнейшем. Массивы имеют много применений в PHP и программировании в целом. Этот раздел представил некоторые базовые вопросы массивов PHP и описал некоторые базовые функции: это понадобится при рассмотрении более развитых свойств массивов в следующих разделах.
Функции для работы со строками
Система PHP содержит ряд функций для работы со строками. Следующий список содержит некоторые из наиболее распространенных строковых функций.
strlen(string) – определяет длину строки string.
ltrim(string) – удаляет символы разделители в начале строки string.
rtrim(string) – удаляет символы разделители в конце строки string.
strpbrk(string, char) – ищет в строке string символ char. Возвращает false или строку, начинающуюся с найденного символа.
strtoupper(string) – преобразует строку в верхний регистр.
strtolower(string) – преобразует строку в нижний регистр.
strrev(string) – возвращает строку string в обратном порядке.
eregi(pattern, subject) – выполняет независимое от регистра символов сравнение с выражением. В строке subject происходит поиск регулярного выражения, заданного строкой pattern.
Следующий блок кода демонстрирует, как использовать строковые функции PHP.
<?php
$string = "Hello World"; $another_string = "Welcome to PHP";
echo strlen($string); echo strtoupper($another_string); echo strrev($another_string); echo strpbrk($string, "W");
?>
11 WELCOME TO PHP PHP ot emocleW World
Первая строка выводит длину строки "Hello World", равную 11. Затем строка "Welcome to PHP" преобразуется в верхний регистр и выводится в окне браузера. Эта строка используется также с функцией strrev для изменения порядка символов строки на обратный. Наконец, в строке происходит поиск символа "W". Так как первое появление символа происходит в тексте "World", выводится эта строка.
Интерполяция
PHP поддерживает также процесс, называемый интерполяцией – замену переменной в строке ее содержимым. Вместо соединения переменных и литералов, их можно объединять внутри двойных кавычек (""). Интерполяция является свойством только двойных кавычек. Переменные и литералы нельзя объединить внутри одиночных кавычек. При использовании двойных кавычек значение переменной выводится вместе с литералом. При использовани одиночных кавычек выводится "буквально" имя переменной вместе с остальной строкой. Следующий пример иллюстрирует свойство интерполяции PHP.
<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>A Web Page</title> </head> <body>
<p>
<?php
$fname = "John"; $lname = "Doe";
echo "The user's name is $fname $lname";
?>
</p> </body> </html>
Этот код создает такой же вывод, как и предыдущий пример. Здесь переменные объединяются с помощью литеральной строки, заключенной в двойные кавычки. Соединение (конкатенация) не требуется.
Константы PHP
Константы, как и переменные, являются временным хранилищем значений в памяти. В отличие от переменных значение константы никогда не изменяется. При объявлении константы используется функция define(), которая требует задать имя константы и значение этой константы.
Константам можно присваивать следующие типы данных.
Целые – целые числа или числа без десятичной точки (1, 999, 325812841).
Числа с плавающей точкой — числа, содержащие десятичную точку (1.11, 2.5, .44).
Строки – текстовая или числовая информация. Строковые данные всегда заключаются в кавычки ("Hello World", "478-477-5555").
Имена констант PHP в отличие от переменных не начинаются со знака "$". Имена констант обычно записывают в верхнем регистре. Имена констант могут содержать буквы, цифры и символ подчеркивания (_); они не могут, однако, начинаться с цифры. Объявление констант показано ниже.
define("STRING_CONSTANT", "This is my string.");
define("NUMERIC_CONSTANT", 5);
Массивы с числовыми индексами
$my_array = array('red', 'green', 'blue')
Этот код создает массив с числовым индексом с именем $my_array. Массиву присваивается три элемента — red, green, и blue. Каждый элемент идентифицируется числовым индексом.
$my_array[0] = 'red' // индекс 0 соответствует элементу red $my_array[1] = 'green' // индекс 1 соответствует элементу green $my_array[2] = 'blue' // индекс 2 соответствует элементу blue
Чтобы получить доступ к содержимому массива, используется имя массива и индекс. Следующий код применяется для вывода значений переменной $my_array.
<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Страница Web </title> </head> <body>
<p>
<?php
$my_array = array('red', 'green', 'blue');
echo "Первое значение массива — " . $my_array[0]; echo "Второе значение массива — " . $my_array[1]; echo "Третье значение массива — " . $my_array[2];
?>
</p> </body> </html>
Первое значение массива — red Второе значение массива — green Третье значение массива — blue
Операторы PHP
Операторы применяются для выполнения операций или действий с переменными. Они могут включать присваивание значения переменной, выполнение сложения переменных, сравнение значений переменных и определение состояния условия.
Арифметические операторы
Операторы присваивания
Операторы сравнения
Логические операторы
Арифметические операторы используются для выполнения основных математических операций. В следующей таблице представлены арифметические операторы, которые применяются в PHP.
+ | сложение |
- | вычитание |
* | умножение |
/ | деление |
% | сравнение по модулю (возвращает остаток от деления) |
++ | увеличивает значение |
-- | уменьшает значение |
Пример 3.3.
(html, txt)
The sum is 11 The difference is 9 The product is 27 The quotient is 3 4 3
Переменные массивы
В то время как скалярная переменная PHP хранит одно значение, переменную массива можно использовать для хранения множества или последовательности значений. Система PHP поддерживает массивы с числовыми индексами и ассоциативные массивы. Массив в PHP является фактически упорядоченным отображением. Отображение является типом, который отображает значения в ключи. Переменные массивов состоят из двух частей – индекса и элемента. Индекс массива, иногда называемый ключом массива, является значением, применяемым для идентификации или доступа к элементам массива. Индекс массива помещается в квадратные скобки. Большинство массивов используют числовые индексы, которые обычно начинаются с 0 или 1. В PHP ассоциативные массивы могут использовать строковые индексы. Оба типа массивов создаются с помощью конструкции array().
Порядок выполнения операций
Когда вычисляется арифметическое выражение, существует заданный порядок, в котором выполняются операции. Этот порядок называется приоритетом операций. Умножение и деление имеют преимущество (и выполняются первыми) перед сложением и вычитанием, при движении в выражении слева направо. Этот порядок имеет важное влияние на то, будут ли получены ожидаемые результаты. Рассмотрим следующие объявления и присваивания.
<?php $num1 = 4; $num2 = 5; $num3 = 2;
$answer = $num1 * $num2 - $num3;
echo $answer; ?>
Получающееся значение будет равно 18. Сначала $num1 умножается на $num2, чтобы получить 20; затем $num3 вычитается из 20, чтобы получить 18. Предположим, однако, что в действительности надо сначала вычесть $num3 из $num2, а затем умножить на $num1, чтобы получить 12. Показанное выше выражение не создаст этот результат, потому что умножение имеет приоритет перед вычитанием и выполнится первым.
Поэтому часто необходимо переопределить порядок выполнения операций и явно управлять порядком вычисления выражения. Для этого используют скобки (), которые могут помочь изменить порядок выполнения арифметических операций. Приведенный выше пример можно переписать следующим образом.
<?php $num1 = 4; $num2 = 5; $num3 = 2;
$answer = $num1 * ($num2 - $num3);
echo $answer;
?>
В этот раз $answer равно 12. $num3 вычитается из $num2, чтобы получить 3. Затем 3 умножается на $num1.
Операторы присваивания используются для изменения значения текущей переменной на значение справа от оператора. В следующей таблице представлены операторы присваивания языка PHP.
= | Переменной слева присваивается вычисленное справа значение |
+= | Складывает значение слева со значением справа и присваивает результат переменной слева |
-= | Вычитает значение справа из значения слева и присваивает результат переменной слева |
*= | Умножает значение справа на значения слева и присваивает результат переменной слева |
/= | Делит значение слева на значение справа и присваивает результат переменной слева |
%= | Делит значение слева на значение справа и присваивает остаток (по модулю) переменной слева |
.= | Значение слева соединяется (конкатенация) со значением справа, и результат присваивается переменной слева |
Операторы сравнения используются для сравенения значений. В следующей таблице представлены операторы сравнения языка PHP.
== | равно |
!= | не равно |
> | больше |
< | меньше |
>= | больше или равно |
<= | меньше или равно |
&& | AND (И) |
|| | OR (ИЛИ) |
! | NOT (НЕ) |
Скалярные переменные
Переменные являются временным местом хранения, используемым для представления значений в сценарии PHP. В PHP имеется два основных типа переменных: скалярные и массивы. Скалярные переменные содержат только одно значение в данный момент времени, а переменные массивы — список значений. Переменные массивы обсуждаются в следующем разделе. Скалярные переменные PHP содержат значения следующих типов.
Целые – целые числа или числа без десятичной точки (1, 999, 325812841).
Числа с плавающей точкой – числа, содержащие десятичную точку (1.11, 2.5, .44).
Строки – текстовая или числовая информация. Строковые данные всегда определяются с помощью кавычек ("Hello World", "478-477-5555").
Булевы значения – используются для значений true (истина) или false (ложь).
Имена переменных PHP всех типов начинаются со знака "$". Имена переменных могут содержать буквы, числа, и символ подчеркивания (_); они не могут, однако, начинаться с цифры. В PHP имена переменных различают регистр символов. Следующие переменные в PHP интерпретируются как две различные переменные.
$myvar $MYVAR
Допустимые имена переменных:
$myvar $F_Name $address1 $my_string_variable
Недопустимые имена переменных:
Myvar $1stvar $&62##
Скалярным переменным PHP присваивают значения в следующем формате:
$username = "jdoe" $first_name = "John" $Last_Name = "Doe"
Переменная username содержит значение jdoe.
Соединение переменных
Оператор точки можно использовать также для соединения строк и переменных:
Сообщение — The user's name is Joe Doe — выводится в окне браузера.
Строка "The user's name is " соединяется со значением $fname (John), за которым следует пробел " ", и значением $lname (Doe).
<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>A Web Page</title> </head> <body>
<p>
<?php
$fname = "John"; $lname = "Doe";
echo "The user's name is " . $fname . " " . $lname;
?>
</p> </body> </html>
The user's name is John Doe
Строки PHP
Строки являются последовательностями символов. В PHP символ соответствует байту, т.е. существует точно 256 возможных различных символов. Строки могут быть очень большими. В PHP не существует практического ограничения на размер строк, поэтому вообще нет причин беспокоиться об их длине. Строковые значения могут использоваться буквально или присваиваться переменным.
В PHP строковый литерал можно представлять тремя способами.
строки в одиночных кавычках
строки в двойных кавычках
строки в синтаксисе heredox
В этом учебнике представлено использование строк в одиночных и двойных кавычках. Синтаксис heredox не рассматривается. Подробная информация об этом синтаксисе имеется в документации PHP.
Строки в двойных кавычках
Строки PHP можно выводить также с помощью двойных кавычек (""). Если строки PHP помещаются в двойные кавычки, то можно применять интерполяцию. Для строк в двойных кавычках PHP поддерживает также больше экранированных символов. Эти символы представлены в таблице ниже.
\n | перенос строки |
\r | возврат каретки |
\t | горизонтальная табуляция |
\\ | обратная косая черта |
\$ | знак доллара |
\" | двойная кавычка |
<?php
echo "PHP is supported by many operating systems including Windows and Linux.";
$name = "John";
echo "The user's name is $name.";
$fruits = array('grapes', 'peaches', 'strawberries');
echo "My favorite fruit is $fruits[0].";
?>
PHP is supported by many operating systems including Windows and Linux. The user's name is John. My favorite fruit is grapes.
Первая строка выводит строку в двойных кавычках с помощью оператора echo. Вторая вывода создается строкой с включенной переменной. Переменная расширяется, и ее содержимое выводится вместе со строкой. Затем расширяется переменная массива и выводится вместе со строкой.
Строки в одиночных кавычках
Одиночные кавычки предоставляют самый простой метод для работы со строками. При использовании этого метода строки заключаются в одиночные кавычки (''). Если одиночные кавычки требуются как часть строки, они должны быть экранированы символом обратной косой черты ("\"). Хотя одиночные кавычки предоставляют простой способ работы со строками, одиночные кавычки не поддерживают применение интерполяции (см. раздел 3-1, Скалярные переменные). Примеры ниже иллюстрируют использование одиночных кавычек.
<?php
//A literal string displayed in the browser window
echo 'PHP was developed in 1994 by Rasmus Lerdorf';
//A literal string assigned to a variable
$string = 'Since its development, PHP has become a popular scripting language.';
echo $string;
//escaping single quotes
echo 'The array contains the values \'2,5,3,4\'.';
//invalid attempt to expand a variable inside of a single quote string
$name = 'John Smith'; echo 'The user's name is $name';
?>
PHP was developed in 1994 by Rasmus Lerdorf Since its development, PHP has become a popular scripting language. The array contains the values '2,5,3,4'. Parse error: syntax error, unexpected T_STRING, expecting ',' or ';'
Первая строка вывода является результатом работы оператора echo, который выводит литеральную строку в одиночных кавычках в окне браузера. Вторая строка выводится после присваивания строки в одиночных кавычках переменной. Переменная затем выводится с помощью оператора echo. Следующая строка вывода демонстрирует использование экранирующего символа. Строка в одиночных кавычках содержит множество одиночных кавычек, используемых для выделения элементов массива. Наконец, порождается ошибка синтаксического анализа, когда внутри строки в одиночных кавычках кодируется переменная.
Вывод констант
Следующий фрагмент кода демонстрирует объявление константы, присваивание константе значения и вывод результатов в окне браузера.
Пример 3.2.
(html, txt)
My PHP program 500 2.25
В этом примере объявляются значения трех констант: STRING_CONST, INTEGER_CONST и FLOAT_CONST. Затем используется оператор echo для вывода содержимого констант в окне браузера. Кроме вывода в окне браузера, константы можно использовать при выполнении математических и строковых операций PHP.
Вывод переменных
Следующий фрагмент кода демонстрирует, как объявить скалярную переменную, присвоить скалярной переменной значение и вывести результаты в окне браузера:
<!DOCTYPE html PUBLIC "-//W3C//DTD/XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml11-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Страница Web</title> </head> <body>
<p>
<?php
$string_var = "Моя программа PHP"; $integer_var = 500; $float_var = 2.25;
echo $string_var; echo $integer_var; echo $float_var;
?>
</p> </body> </html>
Переменные массивы PHP можно создавать и присваивать им значения с помощью конструкции array() или явным образом.
Переменную можно соединять с другими переменными или тегами XHTML с помощью оператора PHP — точки (.). В предыдущем блоке кода значения переменных выводятся в следующем формате:
Моя программа PHP5002.25
Чтобы создать возврат каретки или перенос строки, можно присоединить тег XHTML <br/> в конце каждой пременной:
<?php
$string_var = "My PHP program" . "<br/>"; $integer_var = 500 . "<br/>"; $float_var = 2.25;
echo $string_var; echo $integer_var; echo $float_var;
?>
Теперь после каждой переменной вставляется перенос строки, что приводит к выводу каждого значения на отдельной строке.
My PHP Program 500 2.25