🐘 Самоучитель для начинающих: как освоить PHP с нуля за 30 минут?
В этом руководстве знакомимся с основами PHP, запускаем веб-сервер в Ubuntu и Windows, и собираем HTML-страницу из отдельных PHP-файлов.
PHP (от англ. препроцессор гипертекста) – язык программирования общего назначения, широко используемый в веб-разработке. Сценарии PHP можно внедрять непосредственно в код HTML. В этой статье мы пройдемся по основам программирования на PHP: синтаксису, объявлению переменных, массивам, условным операторам, циклам и функциям. Также запустим двумя способами веб-сервер на локальной машине и соберем страничку из нескольких файлов PHP и фреймворка Bootstrap. В конце статьи приведем список литературы и бесплатные курсы по PHP для новичков.
Редакторы кода
Для удобного кодинга нам понадобится редактор кода (IDE). Популярные:
- PhpStorm (платный, пробная версия на 30 дней);
- Atom (бесплатно);
- Visual Studio Code (бесплатно);
- Sublime Text (бесплатно).
Как запустить PHP в Atom
Устанавливать PHP на компьютер и запускать веб-сервер мы будем в конце статьи в разделе «Собираем HTML-страницу». А пока для запуска PHP-сценариев достаточно добавить плагин Script в редакторе Atom.
Чтобы запустить PHP-сценарий в Atom перейдем в закладку Packages
→ Script
→ Run Script
, либо нажмем на клавиши Ctrl + Shift + B
(рис. 1).
1. Синтаксис
Код в PHP заключается в открывающий <?php
и закрывающий ?>
теги. Согласно стандарту кодирования PSR-12, закрывающий тег должен быть опущен в файлах, содержащих только код PHP. В конце строки ставят разделитель строк – точку с запятой ;
. Если забыть поставить разделитель, то следующая строка кода соединится с предыдущей и интерпретатор PHP выдаст ошибку.
Выведем на экран строку Hello World
(заключена в кавычки) с помощью команды echo
:
через функцию print
:
через функцию printf
(выводит отформатированную строку):
или через функцию print_r()
, выводящую информацию в удобочитаемом виде:
Чтобы перенести строку используем символ \n
, который работает только в двойных кавычках:
2. Объявление переменной
PHP – язык со слабой типизацией, то есть перед объявлением переменной не нужно задавать ее тип. Чтобы объявить переменную, перед ее именем ставят знак доллара $
:
Здесь:
переменной animal
присвоили значение Сat
.
Выведем на экран переменную animal
:
Одно значение можно присвоить нескольким переменным:
Комментарии
Однострочный комментарий начинается с двух слешей //
или хеш-символа #
, а многострочный заключается в /* */
:
3. Типы данных
3.1. Строки
Строка – набор символов, заключенный в одиночные ''
или двойные кавычки ""
:
Конкатенация строк
Оператор конкатенации точка .
соединяет левый и правый аргументы:
Оператор присваивания с конкатенацией .=
присоединяет правый аргумент к левому:
Чтобы перенести слово на новую строку воспользуемся символом переноса \n
, который работает только в двойных кавычках:
3.2. Числа
Целое число (integer) не имеет дробной части:
Число с плавающей точкой
Число с плавающей точкой имеет дробную часть и задается следующий образом:
Чтобы узнать тип переменной воспользуемся функцией gettype()
, а для преобразования числа с плавающей точкой в целое число функцией intval()
:
Арифметические операторы
Оператор | Операция |
+ | Сложение |
- | Вычитание |
* | Умножение |
/ | Деление |
% | Деление по модулю |
** | Возведение в степень |
Таблица 1. Арифметические операторы
Мы можем сложить два числа через запись $number_one = $number_one + $number_two;
или через сокращенную запись $number_one += $number_two;
:
Операторы сравнения
Чтобы сравнить значения используют операторы сравнения, которые возвращают true
или false
:
Если строка не содержит число, то интерпретатор PHP приводит значение строки к 0. Если в строке есть число и оно стоит после буквенных символов, то значение всей строки также приводится к 0. Если число стоит перед буквенными символами, то для сравнении берется только число.
Оператор | Значение |
$n == $m | True, если $n равно $m |
$n === $m | True, если $n равно $m и имеют одинаковые типы |
$n! = $m | True, если $n не равна $m |
$n <> $m | True, если $n не равна $m |
$n !== $m | True, если отличаются тип или значение переменных |
$n < $m | True, если $n меньше $m |
$n > $m | True, если $n больше $m |
$n <= $m | True, если $n меньше или равна $m |
$n >= $m | True, если $n больше или равна $m |
$n <=> $m | Возвращает -1, если $n меньше $m, 0 в случае равенства и 1, если $n больше $m |
Таблица 2. Операторы сравнения
Порядок операций
Сначала считается выражение в скобках:
4. Условный оператор if-else
Оператор if
выполняет код, если выполняется условие. В противном случае выполняется код после else, который переводится, как «иначе», «в другом случае».
Напишем несколько условий с оператором if
и if-else
:
для проверки дополнительных условий используется оператор elseif
:
Здесь:
&&
– логический оператор И
. В нашем условии проверяемое число должно быть больше четырех и меньше десяти.
Оператор | Значение | Результат |
$n and $m | И | true, если и $n, и $m true |
$n or $m | Или | true, если или $n, или $m true |
$n xor $m | Исключающее Или | true, если $n, или $m true |
! $n | Отрицание | true, если $n не true |
$n && $m | И | true, если и $n, и $m true |
$n || $m | Или | true, если или $n, или $m true |
Таблица 3. Логические операторы
5. Тернарный оператор
Тернарный оператор сокращает запись проверяемого условия и имеет следующий синтаксис:
Проверим, переменная n
больше 10
или нет. Если значение n
больше 10
, уменьшим значение n
на единицу (декремент). В противном случае увеличим на единицу (инкремент).
6. Переключатель switch
Переключатель switch
проводит нестрогое сравнение ==
значений и передает управление соответствующему оператору case
. Если значение не совпадает со значением из case
, тогда выполняется переход к оператору default
.
Напишем конструкцию из переключателя switch
и двух
операторов case
:
7. Цикл while
Оператор while
выполняет код до тех пор, пока значение условия не станет ложным.
Выведем на экран пять раз слово Hello
.
Расшифровка:
while
– обозначение цикла.
$m = 0
– начальное значение переменной m
.
$m < 5
– условие, которое проверяется перед началом цикла.
$m++
– инкрементирование, то есть увеличение переменной на единицу.
echo "Hello\n"
– вывод на экран слово Hello
каждый раз с новой строки \n
.
Другой способ записи с помощью декремента в условии:
Здесь:
$m--
– декрементация, то есть уменьшение значения переменной на единицу. В это примере знак декремента --
стоит после переменной, поэтому мы получим четыре итерации (от 4 до 0).
Если поставить оператор декремента перед переменной --$m
, то мы получим три итерации (от 4 до 1):
8. Цикл do..while
Цикл do..while
выполняется минимум один раз, так как условие выполнения цикла проверяется в конце итерации, а не в начале как в цикле while
.
Напишем цикл, выводящий на экран четыре раза слово Hello
:
9. Цикл for
Когда нам известно количество итераций, вместо цикла while
лучше использовать цикл for
.
- Инициализирующее выражение выполняется один раз в начале цикла.
- Проверяется условие. Если оно истинно, то выполняется тело цикла. Если ложно, то выполнение цикла прерывается.
- В конце каждой итерации изменяется счетчик (увеличивается или уменьшается).
Цикл выполняется, до тех пор, пока условие истинно, то есть значение i
не станет равным 4:
10. Цикл foreach
Цикл foreach
последовательно перебирает элементы массива.
На каждой итерации переменной присваивается значение текущего элемента последовательности. Переберем все элементы массива и умножим каждый элемент на 3:
11. Массивы
Массивы – упорядоченная коллекция элементов с доступом по индексу или ключу. Индексный массив создается двумя способами:
Через функцию array()
:
и через квадратные скобки []:
Здесь:
echo $a[1]
– вывести на экран второй элемент массива.
Нумерация массива начинается с 0
. В нашем случаем элементу массива Cat
соответствует порядковый номер 0
, Dog
– 1
, 123
– 2
. Для обращения к элементу массива используется следующий синтаксис: $имя_массива[индекс_элемента]
.
Рекомендуется объявлять массив через квадратные скобки, так как эта запись компактнее.
Создадим пустой массив:
Добавим в него несколько элементов и выведем на экран его содержимое:
Чтобы добавить новый элемент мы использовали запись $имя_массива[] = новый_элемент
. Первый добавленный элемент получает индекс 0
. Индексы следующих элементов увеличиваются на 1
. Можно задать индекс самостоятельно. Для этого в квадратных скобках укажем нужный нам индекс:
При добавлении непронумерованного элемента 5000
, значение его индекса будет на единицу большего максимального значения индекса в массиве – 101
:
Для удаления элемента из массива воспользуемся функцией unset()
:
Здесь:
unset($array[2])
– удаление третьего элемента массива.
В качестве индекса также используют строки:
В таком случае мы получаем что-то напоминающее словари в других языках программирования с ключами и значениями. В PHP такой массив называют ассоциативным.
Ассоциативный массив объявляется через символы =>
:
Создадим ассоциативный массив:
Здесь:
'first_key'
– ключ.
'Cat'
– значение.
Для поиска ключа по значению используем функцию array_search():
Здесь:
array_search('Cat' ,$array)
– поиск ключа, соответствующего значению Cat
в массиве array
.
Чтобы подсчитать количество элементов в массиве воспользуемся функцией count()
:
Также можно создать многомерный массив:
'animals' => ['Cat', 'Dog']
– ключ animals
с двумя значениями: Cat
и Dog
.
'second_array' => [5000, 33, ['third_array' => ['Hello']]]
– ключ second_array
с тремя значениями: два числа 5000
, 33
и массив, но уже со своим ключем third_array
и значением Hello
.
12. Функции
Функция – подпрограмма, которая на входе принимает аргументы (бывают функции без входных аргументов), выполняет код и возвращает результат. Функциональное программирование упрощает жизнь программиста, так как не нужно копировать и вставлять фрагменты кода снова и снова. Достаточно обратиться к функции когда нужно и сколько угодно раз.
Существуют встроенные и пользовательские функции. Встроенные функции – print()
, print_r()
и так далее – придумали разработчики. Пользовательские функции программисты пишут самостоятельно.
Как объявить функцию
Синтаксис функции:
Здесь:
function
– мы говорим интерпретатору, что отсюда начинается функция.
аргументФункции
– переменные, которые передаются функции для выполнения кода.
имяФункции
– чтобы вызывать функцию, ей нужно присвоить имя.
return
– выдает результат работы функции.
Напишем и вызовем функцию, выводящую на экран фразу Hello, World
.
Аргументы функций
До этого мы рассматривали функции без аргументов – переменных, которые функция получает извне. Напишем функцию с аргументами, которая считает сумму трех чисел:
Здесь:
$a
, $b
, $c
– аргументы функции.
13. Собираем HTML-страницу
Чтобы просмотреть HTML-страницу, собранную из нескольких PHP-файлов, установим и запустим веб-сервер, разместим файлы в определенной папке и обратимся к файлу через браузер.
Запуск веб-сервера
Веб-сервер можно запустить несколькими способами:
- Через встроенный в PHP веб-сервер.
- Через сторонние инструменты: XAMPP, Open Server, Winginx.
Встроенный в PHP веб-сервер
Инструкция для Windows:
- Скачаем с официального сайта PHP и распакуем содержимое архива на диск.
- Откроем консоль и перейдем в папку с PHP, используя команду
cd
, например,cd php7
. - Создадим папку
page
команднойmkdir page
. В ней будут храниться файлы нашей странички. - Введем в консоли
php -S localhost:8000 -t P:\php7\page\
. Флаг-S
означает, что мы запускаем сервер по адресуlocalhost
на8000
порту. Флаг-t
указывает путь к корневой директории.
Инструкция для Ubuntu:
- Установим PHP командой
sudo apt install php libapache2-mod-php php-mysql
. - Создадим в домашней директории папку
page
. - Введем в консоли
php -S localhost:8000 -t /home/USERNAME/page
.
Чтобы проверить запущен ли сервер, перейдем по адресу http://localhost:8000/:
Если мы получили ошибку 404, значит сервер запущен.
XAMPP
Скачаем и установим XAMPP. В папке C:\xampp\htdocs\
создадим папку нашей странички page
. Запустим веб-сервер Apache, кликнув по кнопке Start
. Узнаем версию PHP, введя в консоли (Shell) команду php -v
.
Проверим, запущен ли сервер, перейдя по адресу http://localhost/. Если появилось приветственное сообщение, значит сервер запущен.
14. Собираем страничку
Теперь создадим несколько PHP-файлов, из которых соберем страничку. Перейдем в папку page
и создадим четыре файла: index.php
, header.php
, body.php
, footer.php
.
Структура простого HTML-документа выглядит следующим образом:
Воспользуемся фреймворком Bootstrap, чтобы ускорить создание странички. Скачивать ничего не нужно, просто вставим ссылку на Bootstrap в тег <head>
:
Откроем файл header.php
и вставим в него следующий код:
в файл body.php
:
в файл footer.php
:
в файл index.php
:
Здесь:
include
– инструкция, которая подключает к PHP-сценарию другие сценарии. Также сценарии подключают с помощью инструкций require
, include_once
и require_once
. Они отличаются по реакции на отсутствие подключаемого файла.
Откроем страницу, перейдя на http://localhost:8000/ или http://localhost/page/. Должно получиться как на рис. 9.
Литература
- Робин Никсон. Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5;
- Котеров, Симдянов. PHP 7;
- Веллинг, Томсон. Разработка веб-приложений с помощью PHP и MySQL;
Остальные книги указаны в нашей статье ТОП-10 книг по PHP: от новичка до профессионала.
Шпаргалки
YouTube-каналы и курсы
Бесплатные курсы на русском языке:
- Основы php с нуля. Новейший курс 2020 – двадцать четыре урока от основ до регулярных выражений и функций;
- Базовый курс по PHP 7 – узнаете про базовые понятия, GET-параметры, методы, функции и ООП;
- Учим PHP за 1 Час – основы за полтора часа;
- Изучение PHP для начинающих – научитесь работать с массивами, подключать файлы, обрабатывать формы, работать с куки и базой данных MySQL;
- Уроки PHP 7 – много уроков по ООП;
- PHP для начинающих – курс на Stepik для начинающих разработчиков, не требует специальных знаний;
- PHP – первое знакомство – азы программирования на PHP (Stepik).
PHP в «Библиотеке Программиста»
- подписывайтесь на тег PHP, чтобы получать уведомления о новых статьях;
- телеграм-канал «Библиотека пхпшника»;
- книги по программированию в нашем телеграм-канале «Книги для программистов».
Итог
- вы познакомились с синтаксисом PHP и типами данных;
- узнали, как работают условные операторы и циклы;
- запустили веб-сервер в Ubuntu и Windows;
- собрали страничку HTML из файлов PHP.