Всем начинающим PHP-программистам я всегда рекомендовал и рекомендую начинать изучение языка не по обрывкам статей и записей блогеров, а с хорошего самоучителя или учебника.
Да, на блогах можно встретить много интересного и познавательного из области веб-программирования. Но матчасть все же лучше изучать по хорошим учебникам и самоучителям.
1. PHP 7
Дмитрий Котеров, Игорь Симдянов
Рассмотрены основы языка PHP и его рабочего окружения в Windows, Mac OS X и Linux.Отражены радикальные изменения в языке PHP, произошедшие с момента выхода предыдущего издания: трейты, пространство имен, анонимные функции, замыкания, элементы строгой типизации, генераторы, встроенный Web-сервер и многие другие возможности. Приведено описание синтаксиса PHP 7, а также функций для работы с массивами, файлами, СУБД MySQL, memcached, регулярными выражениями, графическими примитивами, почтой, сессиями и т. д.
Особое внимание уделено рабочему окружению: сборке PHP-FPM и Web-сервера nginx, СУБД MySQL, протоколу SSH, виртуальным машинам VirtualBox и менеджеру виртуальных машин Vagrant. Рассмотрены современные подходы к Web-разработке, система контроля версий Git, GitHub и другие бесплатные Git-хостинги, новая система распространения программных библиотек и их разработки, сборка Web-приложений менеджером Composer, стандарты PSR и другие инструменты и приемы работы современного PHP-сообщества.
В третьем издании добавлены 24 новые главы, остальные главы обновлены или переработаны.
На сайте издательства находятся исходные коды всех листингов.
Купить2. Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5
Робин Никсон
Новое издание признанного бестселлера, охватывающего как клиентские, так и серверные аспекты веб-разработки. Эта книга поможет вам освоить динамическое веб-программирование с применением самых современных технологий. Книга изобилует ценными практическими советами, содержит исчерпывающий теоретический материал. Для закрепления материала автор рассказывает, как создать полнофункциональный сайт, работающий по принципу социальной сети.
- Изучите важнейшие аспекты языка PHP и основы объектно-ориентированного программирования.
- Познакомьтесь с базой данных MySQL.
- Управляйте cookie-файлами и сеансами, обеспечивайте высокий уровень безопасности.
- Пользуйтесь фундаментальными возможностями языка JavaScript.
- Применяйте вызовы AJAX, чтобы значительно повысить динамику вашего сайта.
- Изучите основы CSS для форматирования и оформления ваших страниц.
- Освойте продвинутые возможности HTML5: геолокацию, обработку аудио и видео, отрисовку на холсте.
3. PHP7 для начинающих с пошаговыми инструкциями
Майк МакГрат
PHP7 — самый популярный язык программирования в мире. Новый пошаговый самоучитель поможет вам освоить азы PHP7 с нуля за короткое время. Благодаря известной методике пошагового обучения от Майка МакГрата, даже читатели, не имеющие никакого опыта в программировании, смогут приступить к созданию собственных веб-проектов.
Самоучитель написан простым языком, содержит множество иллюстраций, полезные советы и рекомендации.
4. PHP. Объекты, шаблоны и методики программирования
Мэт Зандстра
Четвертое издание книги было пересмотрено и дополнено новым материалом. Книга начинается с обзора объектно-ориентированных возможностей PHP, в который включены важные темы, такие как определение классов, наследование, инкапсуляция, рефлексия и многое другое. Этот материал закладывает основы объектно-ориентированного проектирования и программирования на PHP. Вы изучите также некоторые основополагающие принципы проектирования. В этом издании книги также описаны возможности, появившиеся в PHP версии 5.4, такие как трейты, дополнительные расширения на основе рефлексии, уточнения типов параметров методов, улучшенная обработка исключений и много других мелких расширений языка.
Следующая часть книги посвящена шаблонам проектирования, которые органически дополняют тему ООП и являются описанием элегантных решений распространенных проблем, возникающих при проектировании программного обеспечения. В ней описываются концепции шаблонов проектирования и показаны способы реализации нескольких важных шаблонов в приложениях на PHP. В этой же части приведен материал, посвященный шаблонам корпоративных приложений и баз данных.
В последней части книги описывается несколько важных утилит и методик, помогающих осуществить успешный проект на основе разрозненных кусков кода. В этой части книги описано, как управлять работой нескольких программистов с помощью Git, как выполнить построение и развертывание проекта с помощью Phing и PEAR.
Вы также изучите стратегии автоматического тестирования и построения проектов. Кроме обсуждения передовых средств построения и тестирования проектов, а также серверов непрерывной интеграции, в последней части книги описаны лучшие методики организации работы на основе системы контроля версий Git. Тем самым была отражена общая тенденция перехода на новую платформу, которая наметилась в среде разработчиков с момента выхода третьего издания книги.
Эта книга посвящена трем важным темам: основам объектов, принципам объектно-ориентированного проектирования и лучшим методикам их применения. Изучив их в комплексе читатель сможет создавать первоклассные и отказоустойчивые программные системы.
Основные темы книги:
- Основы объектов: написание классов и методов, создание объектов, разработка сложной иерархии классов на основе наследования.
- Сложные объектно-ориентированные темы, включая статические методы и свойства, обработка ошибочных ситуаций с помощью исключений, создание абстрактных классов и интерфейсов.
- Общие сведения об основных принципах объектно-ориентированного проектирования и их использование для создания эффективной структуры классов и объектов приложения.
- Изучение базовых шаблонов проектирования, их структуры и основных принципов, положенных в их основу.
- Описание ряда основополагающих шаблонов, которые можно применить в собственных проектах.
- Изучение методик и средств, гарантирующих успешное выполнение проекта, включая модульное тестирование, контроль версий, построение и развертывание проекта, управление пакетами, а также сервер непрерывной интеграции Jenkins.
5. PHP. Быстрый старт
Каллум Хопкинс
Все, что нужно знать о PHP в одной книге!
Язык PHP очень популярен, он обеспечивает функционирование 80% всех веб-сайтов, в том числе таких ресурсов, как Facebook, Wikipedia и WordPress. Этот язык прост в изучении и отлично подходит для начинающих. Изучение материалов нашей книги отнимет у вас минимум времени, но вы получите максимум информации, которую сразу сможете использовать!
Благодаря интенсивному курсу всего за пару дней вы можете:
- Изучить основы PHP — синтаксис, операторы, циклы и функции;
- Разобраться в теме объектно-ориентированного программирования;
- Узнаете, как PHP работает с формами и данными;
- Сможете повысить безопасность своих PHP-приложений.
Всего за несколько дней вы подготовите солидную базу для самостоятельного создания PHP-кода!
Купить6. Современный PHP. Новые возможности и передовой опыт
Джош Локхарт
Из книги вы узнаете, как РНР превратился в зрелый полнофункциональный объектно-ориентированный язык, с пространствами имен и постоянно растущей коллекцией библиотек компонентов. Автор демонстрирует новые возможности языка на практике. Вы узнаете о передовых методах проектирования и конструирования приложений, работы с базами данных, обеспечения безопасности, тестирования, отладки и развертывания.Если вы уже знакомы с языком РНР и желаете расширить свои знания о нем, то эта книга для вас!
Купить7. PHP. Справочник
Пол Хадсон
Книга представляет собой полное и наглядное справочное пособие по PHP. В числе многих преимуществ PHP перед другими языками web-программирования — легкость разработки и простота обращения, богатые объектно-ориентированные возможности и мощные расширения. Издание содержит емкие, но при этом понятные примеры. Оно незаменимо при создании сайтов. Начинающие php-программисты найдут здесь ответы на многие вопросы: как написать первый скрипт, подключиться к своей базе данных, динамически формировать страницы сайта. Опытным разработчикам будут весьма интересны разделы о защите информации сайта, взаимодействии с базами данных, мультимедиа, XML, а также расширенных возможностях и особенностях настройки PHP.
Купить8. Разработка веб-приложений с помощью PHP и MySQL
Люк Веллинг, Лаура Томсон
Исчерпывающее учебное пособие по разработке веб-приложений, управляемых базами данных, с использованием PHP и MySQL! Эта книга предназначена для тех, кто знаком с основами HTML и ранее разрабатывал программы на современных языках программирования, но, возможно, не занимался программированием для Веб или не использовал реляционные базы данных.
В ней подробно описано применение последних версий PHP и MySQL для построения крупных коммерческих Web-сайтов. Основное внимание в книге уделено реальным приложениям. Здесь рассматриваются как простые интерактивные системы приема заказов, так и различные аспекты электронных систем продажи и безопасности во взаимосвязи с созданием реального Web-сайта. Подробно описаны все стадии разработки множества типовых проектов на PHP и MySQL, в числе которых служба веб-почты, приложение поддержки Web-форумов и электронный книжный магазин. Заслуживают особого внимания главы, посвященные объектно-ориентированному программированию на PHP, динамической генерации документов, доступу к веб-службам с помощью XML и SOAP и созданию приложений Web 2.0 с помощью Ajax.
Основное отличие этого издания от предыдущего состоит в том, что материалы и весь исходный код полностью переписаны для новых версий PHP 5.3 и MySQL 5.1. Книга ориентирована на профессиональных разработчиков, но будет полезной и начинающим.
PHP и MySQL представляют собой популярные технологии с открытым исходным кодом, которые практически идеально подходят для быстрой и эффективной разработки веб-приложений, управляемых базами данных. PHP — это мощный язык написания сценариев, специально созданный для того, чтобы предоставить разработчикам все возможности по быстрому построению веб-приложений. MySQL является высокопроизводительной и надежной системой управления базами данных, которая, с одной стороны, хорошо интегрируется с PHP и, с другой стороны, ориентирована на реализацию динамических Интернет-приложений.
В книге продемонстрировано, как эти два инструмента используются для создания высокоэффективных и, в то же время, интерактивных веб-приложений. Здесь представлено исчерпывающее описание языка PHP, а также рассмотрены вопросы настройки и работы с базами данных MySQL и особенности взаимодействия PHP-сценариев с базами данных и серверами.
В эту практическую, изобилующую реальными примерами книгу включено множество приложений, на основе которых демонстрируется решение общих задач: методика аутентификации посетителей на сайте; разработка полнофункциональной покупательской тележки; динамическая генерация изображений и PDF-документов; отправка и обработка электронной почты; организация дискуссионных форумов; подключение к веб-службам с использованием XML и разработка приложений Web 2.0 с интерактивностью, обеспечиваемой Ajax.
Четвертое издание книги претерпело существенные изменения - весь материал был тщательно пересмотрен и дополнен, и теперь он полностью соответствует новым версиям PHP 5.3 и MySQL 5.1.
Купить9. PHP. Создание динамических страниц
Дэвид Пауэрс
Язык РНР сочетает мощь и простоту. Эти качества сделали его выбором №1 для миллионов разработчиков сайтов. Учитывая, что всем им приходится иметь дело с одними и теми же, по сути, задачами, авторы этой книги собрали под одной обложкой готовые решения для самых распространенных случаев: от управления файлами до работы с базами данных.
Эта книга подходит как для новичков, так и для опытных программистов РНР, поскольку здесь на практических примерах разбираются проблемы, с которыми часто сталкиваются веб-разработчики.
Купить10. PHP и MySQL. Исчерпывающее руководство
Бретт Маклафлин
Если у вас есть опыт разработки сайтов с помощью CSS и JavaScript, то эта книга переведет вас на новый уровень — создание динамических сайтов на основе PHP и MySQL. Благодаря практическим примерам в книге вы узнаете все возможности серверного программирования. Вы прочитаете, как выстраивать базу данных, управлять контентом и обмениваться информацией с пользователями, применяя запросы и веб-формы. — Написание PHP-сценариев и создание веб-форм.
- Синтаксис PHP и SQL.
- Создание и управление базой данных.
- Создание динамических веб-страниц, которые изменяются при каждом новом просмотре.
- Разработка шаблонов страниц об ошибках, которые будут выводиться пользователям.
- Применение файловой системы для доступа к данным пользователя, включая иллюстрации и двоичные файлы.
- Создание административной страницы для управления сайтом.
Подпишитесь на мой телеграм и первыми получайте новые материалы, в том числе которых нет на сайте.
1. Подружитесь со справочником по PHP
Если вы новичок в PHP, значит, пришло время познакомиться с внушающим почтение справочником PHP. Справочник по PHP невероятно исчерпывающий и содержит действительно полезные комментарии к каждой статье. Перед тем, как задавать вопросы или пытаться самостоятельно разрешить проблему, сэкономьте время и просто возьмите курс на справочник. Ответы на ваши вопросы уже удобно разместились в полезной статье на сайте PHP.net.
В данном случае мы Вам рекомендуем поискать самостоятельно справочники на русском языке, лучше php для начинающих. Будем рады, если Вы дадите ссылке на полезные справочники в комментариях к статье (Просто учитывайте, что это перевод статьи).
2. Включите отчет об ошибках
6. Делайте отступы и используйте пробелы в коде для читаемости
Если вы не используете отступы и пробелы в коде, то результат выглядит, как картина Джексона Поллака (Jackson Pollack). Обеспечьте читаемость своего кода и нормальный поиск, потому что почти наверняка в будущем вы будете делать в нем изменения. IDE и современные текстовые редакторы могут автоматически делать отступы в коде.
7. Делайте код многоуровневым
Разделение на уровни ваших приложений – это ничто иное, как разделение различных компонентов кода на части. В будущем это даст вам возможность легко изменять код.
8. Всегда используйте
Часто программисты пытаются использовать сокращения в операторах PHP. Вот как это обычно делается:
echo "Hello world"; ?> ="Hello world"; ?> <% echo "Hello world"; %>
echo "Hello world" ; = "Hello world" ; ?> <% echo "Hello world" ; %> |
Хотя это действительно экономит несколько символов, все эти методы являются устаревшими и неофициальными. Придерживайтесь стандартного , так как это гарантированно будет поддерживаться всеми будущими версиями.
9. Используйте содержательные, последовательные названия
Именование – не только для вашего собственного удовольствия. Нет ничего хуже, чем продираться сквозь бессмысленные условные обозначения другого программиста. Помогите самому себе и другим, используя для своих классов и свойств имена, имеющие смысл.
10. Комментируйте, комментируйте, комментируйте
Кроме использования пробелов и отступов для разделения кода, вам также придется использовать встроенные комментарии, чтобы снабжать примечаниями свой код. Позже вы поблагодарите сами себя, когда придется возвращаться и искать что-либо в коде, или если вы просто не помните того, что делала определенная функция. Это также полезно для тех, кому нужно просмотреть ваш код.
11. Установите MAMP/WAMP
MySQL — самый популярный вид базы данных, используемый с PHP (хотя и не единственный). Если нужно настроить локальное окружение для разработки и тестирования ваших PHP-приложений на компьютере, предусмотрите установку MAMP (Mac) или WAMP (Windows). Установка MySQL на ваш собственный компьютер может стать утомительным процессом, а оба этих программных пакета содержат MySQL. Ловко и просто.
12. Установите лимиты своим скриптам
Установка лимита времени на PHP-скрипты – очень ответственная вещь. Бывают моменты, когда скрипты выходят из строя, и когда это произойдет, вам придется использовать свойство set_time_limit (установить лимит времени), чтобы избежать бесконечно повторяющихся циклов и истечения таймаутов времени соединения с базой данных. Set_time_limit устанавливает лимит времени на максимальное количество секунд, за которое выполняется скрипт (по умолчанию 30). По истечении этого времени возбуждается неустранимая ошибка.
13. Используйте объекты (или ООП)
Объектно-ориентированное программирование (ООП) использует объекты, чтобы представлять компоненты приложения. ООП – это не только способ разбить свой код на отдельные логические секции, оно также снижает количество повторений кода и делает намного более легким его модифицирование в будущем.
14. Поймите разницу между одинарными и двойными кавычками
Использование одинарных кавычек в строках более эффективно, так как парсеру (синтаксическому анализатору) не приходится просеивать код в поиске специальных символов (прим. перев. escape-последовательностей) и прочих вещей, что позволяют двойные кавычки. Там, где это возможно, старайтесь всегда использовать одинарные кавычки.
Возражение: Собственно, это не обязательно верно. Тесты Benchmark показывают, что при тестировании строк без переменных существуют определенные преимущества быстродействия при использовании двойных кавычек.
15. Не ставьте phpinfo() в свой Webroot
Phpinfo – чудесная вещь. Просто создав PHP-файл, в котором есть:
|
и пристроив его где-нибудь на сервере, вы сможете незамедлительно узнавать все об окружении своего сервера. Тем не менее, множество новичков поместит файл, содержащий phpinfo() в webroot сервера. Это чрезвычайно небезопасная практика, и если чей-то пытливый ум получит доступ, он может потенциально сглазить ваш сервер. Убедитесь, что phpinfo() находится в безопасном месте, а в качестве дополнительной меры удалите его, как только закончите.
16. Никогда, никогда не доверяйте своим пользователям
Если в приложении есть места для входа пользователей, вы всегда должны предполагать, что кто-то попробует ввести сомнительный код. (Мы не подразумеваем, что ваши пользователи — плохие люди. Это просто здравый смысл.) Отличный способ уберечь свой сайт от хакеров – всегда инициализировать свои переменные для защиты сайта от XSS-атак. На PHP.net есть пример должным образом закрытой формы с инициализированными переменными:
if (correct_user ($_POST [ "user" ] , $_POST [ "password" ] ) { $login = true ; if ($login ) { forward_to_secure_environment () ; |
17. Храните пароли зашифрованными
Многие новички в PHP часто сбрасывают деликатные данные, такие как пароли, в базу данных, не применяя шифрование. Рассмотрите использование MD5 для шифрования паролей перед тем, как выкладывать их базу данных.
echo md5("myPassword"); // renders -
echo md5 ("myPassword" ) ; // renders - |
Возражение: Тем не менее, помните, что хэши MD5 уже давно скомпрометированы. Безусловно, они скорее безопасны, чем нет, но с помощью гигантской “спектральной таблицы” хакеры могут восстановить ваш хэш. Для обеспечения еще большей безопасности обдумайте возможность добавления «соли» (помех в виде «белого шума»). «Соль» – это обычно дополнительный набор символов, которые вы присоединяете к пользовательской строке.
18. Используйте инструменты визуализации баз данных
Если вам кажется сложным планировать и изменять базы данных для своих PHP-приложений, можно было бы рассмотреть возможность использования инструмента визуализации баз данных. Пользователи MySQL могут работать с DBDesigner и MySQL Workbench для визуального дизайна своих баз данных.
19. Используйте буферизацию вывода
Буферизация вывода – это простой способ очень сильно улучшить качество и скорость вашего PHP-скрипта. Без буферизации вывода ваш скрипт будет показывать HTML на странице так, как он обрабатывается – частями. Добавление буферизации вывода позволяет PHP хранить HTML как переменную и посылать его на браузер единой порцией.
Для активирования функции буферизации вывода просто добавьте ob_start() как здесь в начале файла.
Возражение: Хотя это и не требуется, обычно считается хорошей практикой просто взять и прикрепить функцию “ob_end_flush();” к концу документа. P.S. Хотите также сжать HTML? Просто смените “ob_start();”на “ob_start(‘ob_gzhandler’)”;
XHTML
|
20. Оберегайте свой скрипт от атаки SQL-injection
Если вы не отделяете (escape) символы, использующиеся в строках SQL, ваш код уязвим для атаки SQL-injection. Избежать этого можно, используя либо функцию mysql_real_escape_string (прим. перев. для отделения символов), либо подготовленные операторы SQL (prepared statements).
Вот пример mysql_real_escape_string в действии:
$username = mysql_real_escape_string($GET["username"]);
$username = mysql_real_escape_string ($GET [ "username" ] ) ; |
И подготовленного оператора:
21. Попробуйте ORM
Если вы пишете объектно-ориентированный PHP, то можете использовать OR-mapping (ORM). ORM позволяет вам преобразовывать данные между реляционными базами данных и языками объектно-ориентированного программирования. Короче говоря, ORM дает возможность работать с базами данных таким же образом, каким вы работаете с классами и объектами в PHP.
Для PHP есть множество ORM-библиотек, таких как Propel, а также ORM встроен в фреймворки PHP, такие, как CakePHP.
22. Кэшируйте страницы, управляемые базой данных
Кэширование PHP-страниц, управляемых базой данных – отличная идея для улучшения скорости загрузки и производительности своего скрипта. В действительности не так уж трудно создать и извлечь статические файлы содержимого при помощи нашего доброго друга ob_start(). Вот пример, взятый со Snipe.net:
// TOP of your script $cachefile = "cache/".basename($_SERVER["SCRIPT_URI"]); $cachetime = 120 * 60; // 2 hours // Serve from the cache if it is younger than $cachetime if (file_exists($cachefile) && (time() - $cachetime < filemtime($cachefile))) { include($cachefile); echo ""; exit; } ob_start(); // start the output buffer // Your normal PHP script and HTML content here // BOTTOM of your script $fp = fopen($cachefile, "w"); // open the cache file for writing fwrite($fp, ob_get_contents()); // save the contents of output buffer to the file fclose($fp); // close the file ob_end_flush(); // Send the output to the browser
// TOP of your script $cachefile = "cache/" . basename ($_SERVER [ "SCRIPT_URI" ] ) ; $cachetime = 120 * 60 ; // 2 hours // Serve from the cache if it is younger than $cachetime if (file_exists ($cachefile ) && (time () - $cachetime < filemtime ($cachefile ) ) ) { include ($cachefile ) ; |
» Определение функций в PHP
Для начала приведем пример создания пользовательской функции . Очень часто на практике требуется вывести сообщение об ошибке, поэтому логично было бы организовать это с помощью функции (листинг 7.1).
Листинг 7.1. Пример функции.
‹html›
‹head›
‹title›Пример функции‹/title›
‹/head›
‹body›
‹?php
function error_msg ($err_str)
{
echo "‹b›0шибка!‹br›Причина: " . $err_str . "‹/b›";
}
error_msg("Bы ввели отрицательное число");
?>
‹/body›
‹/html›
Итак, описание пользовательской функции начинается со слова function . Затем следует ее имя и в круглых скобках через запятую указываются входные параметры (аргументы). В данном случае имя функции - error_msg, а аргумент - $err_str. Далее в фигурных скобках следует тело функции, в котором указываются команды на исполнение.
Разберем поэтапно ход работы такой программы. При вызове функции еrror_msg() строка вы ввели отрицательное число записывается в переменную $err_srt и выводится в теле функции.
Заметьте, что описание функции мы поместили прежде, чем вызвали ее. На самом деле, начиная с четвертой версии РНР, описание может располагаться в любом месте программы.
Мы уже встречали среди встроенных функций те, которые возвращают значения. При создании пользовательских функций тоже имеется такая возможность (листинг 7.2).
Листинг 7.2. Функция возведения в квадрат.
‹html›
‹head›
‹title›Функция возведения в квадрат‹/title›
‹/head›
‹body›
‹?php
function mnog($num)
{
return $num*$num;
}
echo mnog(2);
?›
‹/body›
‹/html›
Эта простая функция подсчитывает квадрат числа, который передается в качестве параметра. Возвращение результата происходит посредством оператора return, который находится в теле цикла. Все, что записывается после него, функция передает программе. Также оператор return можно использовать для завершения работы функции (листинг 7.3).
Листинг 7.3. Функция возведения числа в степень -1
‹html›
‹head›
‹title›Функция возведения числа в степень -1 ‹/title›
‹/head›
‹body›
‹?php
function invert($num)
{
if ($num == 0) return;
echo 1/$num;
}
echo invert(0);
?›
‹/body›
‹/html›
В этом примере если мы передадим в качестве входного параметра 0, то программа не выдаст предупреждения об ошибке, так как завершиться еще до выполнения операции деления.
Негласные правила при определении функций
В этом самоучителе уже не раз упоминалось о том, что существует ряд негласных правил оформления кода. Для функций рекомендуется писать имена в нижнем регистре и разделять слова символом подчеркивания. Пример:
set_var();
print_msg();
inc();
Обычно если функция что-то возвращает, то ее название начинают со слова get_. Пример:
get_cfg_var();
get_class();
get_browser();
Также часто используют приставки set_, show_, print_ и другие, которые позволяют по названию функции определить, что она делает. В наших примерах мы не всегда будем придерживаться этих правил, так как они несут другую смысловую нагрузку.