В этом руководстве знакомимся с основами 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. Установка IDE Как установить Atom в Ubuntu и Windows читайте в нашем самоучителе по Python. Чтобы запустить PHP-сценарий в Atom перейдем в закладку Packages → Script → Run Script, либо нажмем на клавиши Ctrl + Shift + B (рис. 1). Рис. 1. Запуск php-скрипта в редакторе Atom 1. Синтаксис Код в PHP заключается в открывающий <?php и закрывающий ?> теги. Согласно стандарту кодирования PSR-12, закрывающий тег должен быть опущен в файлах, содержащих только код PHP. В конце строки ставят разделитель строк – точку с запятой ;. Если забыть поставить разделитель, то следующая строка кода соединится с предыдущей и интерпретатор PHP выдаст ошибку. Выведем на экран строку Hello World (заключена в кавычки) с помощью команды echo: <?php echo 'Hello, World.'; // Hello, World. через функцию print: <?php print 'Hello, World.'; // Hello, World. через функцию printf (выводит отформатированную строку): <?php printf('Hello, World.'); // Hello, World. или через функцию print_r(), выводящую информацию в удобочитаемом виде: <?php print_r('Hello, World.'); // Hello, World. Чтобы перенести строку используем символ n, который работает только в двойных кавычках: <?php print_r("Hello, World.nHello, Coder."); /* Hello, World. Hello, Coder. */ 2. Объявление переменной PHP – язык со слабой типизацией, то есть перед объявлением переменной не нужно задавать ее тип. Чтобы объявить переменную, перед ее именем ставят знак доллара $: $animal = 'Cat'; Здесь: переменной animal присвоили значение Сat. Выведем на экран переменную animal: <?php $animal = 'Cat'; echo $animal; // Cat Одно значение можно присвоить нескольким переменным: <?php $first_animal = $second_animal = $third_animal = 'Cat'; echo "$first_animal"; // Cat echo "$second_animal"; // Cat echo "$third_animal"; // Cat Комментарии Однострочный комментарий начинается с двух слешей // или хеш-символа #, а многострочный заключается в /* */: <?php // однострочный комментарий # однострочный комментарий /* многострочный комментарий */ 3. Типы данных 3.1. Строки Строка – набор символов, заключенный в одиночные '' или двойные кавычки "": <?php $first_animal = 'Cat'; $second_animal = "Dog"; Конкатенация строк Оператор конкатенации точка . соединяет левый и правый аргументы: <?php $first_animal = 'Cat'; $second_animal = 'Dog'; $animals = $first_animal . $second_animal; echo "$animals"; // CatDog Оператор присваивания с конкатенацией .= присоединяет правый аргумент к левому: <?php $first_animal = 'Cat'; $second_animal = 'Dog'; $third_animal = 'Giraffe'; $animals = $first_animal; $animals .= $second_animal; $animals .= $third_animal; echo "$animals"; // CatDogGiraffe Чтобы перенести слово на новую строку воспользуемся символом переноса n, который работает только в двойных кавычках: <?php $first_animal = "Catn"; $second_animal = "Dogn"; $third_animal = "Giraffe"; $animals = $first_animal; $animals .= $second_animal; $animals .= $third_animal; echo "$animals"; /* Cat Dog Giraffe */ 3.2. Числа Целое число (integer) не имеет дробной части: <?php $number_one = 5678; // целое положительное число $number_two = -5678; // целое отрицательное число Число с плавающей точкой Число с плавающей точкой имеет дробную часть и задается следующий образом: <?php $number_one = 1.5678; // 1.5678 – положительное число с плавающей точкой $number_two = -1.5678; // -1.5678 – отрицательное число с плавающей точкой $number_three = 1.5678e0; // 1.5678 – положительное число с плавающей точкой $number_four = 1.5678e2; // 156.78 – положительное число с плавающей точкой $number_five = 1.5678E-2; // 0.015678 – положительное число с плавающей точкой Чтобы узнать тип переменной воспользуемся функцией gettype(), а для преобразования числа с плавающей точкой в целое число функцией intval(): <?php $number_one = 1.5678; // 1.5678 – положительное число с плавающей точкой echo gettype($number_one); // double $number_one = intval($number_one); echo $number_one; // 1 echo gettype($number_one); // integer Арифметические операторы Оператор Операция + Сложение — Вычитание * Умножение / Деление % Деление по модулю ** Возведение в степень <?php echo 2 + 4; // 6 echo 2 / 4; // 0.5 echo 2 * 4; // 8 echo 2 - 4; // -2 echo 2 % 4; // 2 echo 2 ** 4; // 16 Мы можем сложить два числа через запись $number_one = $number_one + $number_two; или через сокращенную запись $number_one += $number_two;: <?php // полная запись $number_one = 1; $number_two = 3; $number_one = $number_one + $number_two; echo $number_one; // 4 // сокращенная запись запись $number_one = 1; $number_two = 3; $number_one += $number_two; echo $number_one; // 4 Операторы сравнения Чтобы сравнить значения используют операторы сравнения, которые возвращают true или false: <?php echo 4 > 0; // 1 – true echo 4 <= 55; // 1 – true echo 4 != 5; // 1 – true echo 4 <=> 5; // -1 echo 4 <=> 4; // 0 echo 4 <=> 3; // 1 Если строка не содержит число, то интерпретатор PHP приводит значение строки к 0. Если в строке есть число и оно стоит после буквенных символов, то значение всей строки также приводится к 0. Если число стоит перед буквенными символами, то для сравнении берется только число. <?php echo 0 == 'hello'; // true, так как 0 = 0 echo 0 == 'hello3555'; // true, так как 0 = 0 echo 0 == '3555hello'; // false, так как 0 не равно 3555 echo 3555 == '3555hello'; // true, так как 3555 равно 3555 Оператор Значение $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 Таблица 1. Операторы сравнения Порядок операций Сначала считается выражение в скобках: <?php print_r((2 * 4) + 5); // 13 4. Условный оператор if-else Рис. 2. Условный оператор if в PHP Оператор if выполняет код, если выполняется условие. В противном случае выполняется код после else, который переводится, как «иначе», «в другом случае». Синтаксис оператора if-else if (условие) выполнить_код else выполнить_другой_код Напишем несколько условий с оператором if и if-else: <?php if (2 < 5) { echo 'true'; } // true if (2 > 5) { echo 'true'; } else { echo 'false'; } // false для проверки дополнительных условий используется оператор elseif: <?php $number = 15; if ($number < 3) { echo 'Число меньше трех.'; } elseif ($number > 4 && $number < 10) { echo 'Число в промежутке от 4 до 10.'; } else { echo 'Число больше 10.'; } // Число больше 10 Здесь: && – логический оператор И. В нашем условии проверяемое число должно быть больше четырех и меньше десяти. Оператор Значение Результат $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 Таблица 2. Логические операторы 5. Тернарный оператор Тернарный оператор сокращает запись проверяемого условия и имеет следующий синтаксис: условие ? выполнить_код_если_истинно : выполнить_код_если_ложно: Проверим, переменная n больше 10 или нет. Если значение n больше 10, уменьшим значение n на единицу (декремент). В противном случае увеличим на единицу (инкремент). <?php $n = 5; $n > 10 ? $n-- : $n++; echo $n; // 6 6. Переключатель switch Переключатель switch проводит нестрогое сравнение == значений и передает управление соответствующему оператору case. Если значение не совпадает со значением из case, тогда выполняется переход к оператору default. Синтаксис переключателя switch switch (переменная) { case 'значение1': код break; case 'значение2': код break; default: код break; } Напишем конструкцию из переключателя switch и двух операторов case: <?php $n = 3; switch ($n) { case 1: echo "Число равно двум."; break; case 2: echo "Число равно пяти."; break; default: echo "Значение по умолчанию."; break; } // Значение по умолчанию. 7. Цикл while Рис. 3. Цикл while в PHP Оператор while выполняет код до тех пор, пока значение условия не станет ложным. Синтаксис цикла while while (условие) { // код } Выведем на экран пять раз слово Hello. <?php $m = 0; while ($m < 4) { $m++; echo "Hellon"; } /* Hello Hello Hello Hello */ Расшифровка: while – обозначение цикла. $m = 0 – начальное значение переменной m. $m < 5 – условие, которое проверяется перед началом цикла. $m++ – инкрементирование, то есть увеличение переменной на единицу. echo "Hellon" – вывод на экран слово Hello каждый раз с новой строки n. Другой способ записи с помощью декремента в условии: <?php $m = 4; while ($m--) { echo "Hellon"; } /* Hello Hello Hello Hello */ Здесь: $m-- – декрементация, то есть уменьшение значения переменной на единицу. В это примере знак декремента -- стоит после переменной, поэтому мы получим четыре итерации (от 4 до 0). Если поставить оператор декремента перед переменной --$m, то мы получим три итерации (от 4 до 1): <?php $m = 4; while (--$m) { echo "Hellon"; } /* Hello Hello Hello */ 8. Цикл do..while Цикл do..while выполняется минимум один раз, так как условие выполнения цикла проверяется в конце итерации, а не в начале как в цикле while. Синтаксис цикла do..while do { // код } while (условие); Напишем цикл, выводящий на экран четыре раза слово Hello: <?php $a = 0; do { echo "Hellon"; $a++; } while ($a < 4); /* Hello Hello Hello Hello */ 9. Цикл for Рис. 4. Цикл for в PHP Когда нам известно количество итераций, вместо цикла while лучше использовать цикл for. Синтаксис цикла for for (инициализация; условие_цикла; счетчик) тело_цикла Инициализирующее выражение выполняется один раз в начале цикла. Проверяется условие. Если оно истинно, то выполняется тело цикла. Если ложно, то выполнение цикла прерывается. В конце каждой итерации изменяется счетчик (увеличивается или уменьшается). Цикл выполняется, до тех пор, пока условие истинно, то есть значение i не станет равным 4: <?php for ($i=0; $i <= 4; $i++) { echo $i; } // 01234 10. Цикл foreach Цикл foreach последовательно перебирает элементы массива. Синтаксис цикла foreach foreach (массив as переменная) { инструкция } На каждой итерации переменной присваивается значение текущего элемента последовательности. Переберем все элементы массива и умножим каждый элемент на 3: <?php $array = [1, 2, 3, 4]; foreach ($array as $number) { $number *= 3; echo $number; } // 36912 11. Массивы Рис. 5. Индексы элементов в массиве PHP Массивы – упорядоченная коллекция элементов с доступом по индексу или ключу. Индексный массив создается двумя способами: Через функцию array(): <?php $a = array('Cat', 'Dog', 123); echo $a[1]; // Dog и через квадратные скобки []: <?php $a = ['Cat', 'Dog', 123]; echo $a[1]; // Dog Здесь: echo $a[1] – вывести на экран второй элемент массива. Нумерация массива начинается с 0. В нашем случаем элементу массива Cat соответствует порядковый номер 0, Dog – 1, 123 – 2. Для обращения к элементу массива используется следующий синтаксис: $имя_массива[индекс_элемента]. Рекомендуется объявлять массив через квадратные скобки, так как эта запись компактнее. Создадим пустой массив: <?php $a = []; Добавим в него несколько элементов и выведем на экран его содержимое: <?php $array = []; $array[] = 'Cat'; $array[] = 'Dog'; $array[] = 123; print_r($array); /* Array ( [0] => Cat [1] => Dog [2] => 123 ) */ Чтобы добавить новый элемент мы использовали запись $имя_массива[] = новый_элемент. Первый добавленный элемент получает индекс 0. Индексы следующих элементов увеличиваются на 1. Можно задать индекс самостоятельно. Для этого в квадратных скобках укажем нужный нам индекс: <?php $array = []; $array[100] = 'Cat'; $array[0] = 'Dog'; $array[33] = 123; print_r($array[0]); // Dog При добавлении непронумерованного элемента 5000, значение его индекса будет на единицу большего максимального значения индекса в массиве – 101: <?php $array = []; $array[100] = 'Cat'; $array[0] = 'Dog'; $array[33] = 123; print_r($array); /* Array ( [100] => Cat [0] => Dog [33] => 123 ) */ $array[] = 5000; print_r($array); /* Array ( [100] => Cat [0] => Dog [33] => 123 [101] => 5000 ) */ Для удаления элемента из массива воспользуемся функцией unset(): <?php $array = ['Cat', 'Dog', 123]; unset($array[2]); print_r($array); /* Array ( [0] => Cat [1] => Dog ) */ Здесь: unset($array[2]) – удаление третьего элемента массива. В качестве индекса также используют строки: <?php $array = []; $array['animal_one'] = 'Cat'; $array['animal_two'] = 'Dog'; $array['number'] = 123; print_r($array['animal_two']); // Dog В таком случае мы получаем что-то напоминающее словари в других языках программирования с ключами и значениями. В PHP такой массив называют ассоциативным. Ассоциативный массив объявляется через символы =>: $имя_словаря = ['ключ1' => 'значение1', 'ключ2' => 'значение2'] Создадим ассоциативный массив: <?php $array = ['first_key' => 'Cat', 'second_key' => 5000]; print_r($array); /* Array ( [first_key] => Cat [second_key] => 5000 ) */ Здесь: 'first_key' – ключ. 'Cat' – значение. Для поиска ключа по значению используем функцию array_search(): <?php $array = ['first_key' => 'Cat', 'second_key' => 5000]; print_r(array_search('Cat' ,$array)); // first_key Здесь: array_search('Cat' ,$array) – поиск ключа, соответствующего значению Cat в массиве array. Чтобы подсчитать количество элементов в массиве воспользуемся функцией count(): <?php $array = ['first_key' => 'Cat', 'second_key' => 5000]; print_r(count($array)); // 2 Также можно создать многомерный массив: <?php $array = ['animals' => ['Cat', 'Dog'], 'second_array' => [5000, 33, ['third_array' => ['Hello']]]]; print_r($array['animals'][1]); // Dog print_r($array['second_array'][2]['third_array'][0]); // Hello '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 имяФункции(аргументФункции1, аргументФункции2, ...) { код return результат } Здесь: function – мы говорим интерпретатору, что отсюда начинается функция. аргументФункции – переменные, которые передаются функции для выполнения кода. имяФункции – чтобы вызывать функцию, ей нужно присвоить имя. return – выдает результат работы функции. Напишем и вызовем функцию, выводящую на экран фразу Hello, World. <?php function helloMessage(){ return print("Hello, World."); } helloMessage(); // Hello, World. – вызов функции Аргументы функций До этого мы рассматривали функции без аргументов – переменных, которые функция получает извне. Напишем функцию с аргументами, которая считает сумму трех чисел: <?php function summation($a, $b, $c){ return print($a + $b + $c); } summation(1, 2, 3); // 6 summation(100, 74, 8); // 182 Здесь: $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:php7page. Флаг -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/: Рис. 6. Запуск встроенного в PHP веб-сервера Если мы получили ошибку 404, значит сервер запущен. XAMPP Скачаем и установим XAMPP. В папке C:xampphtdocs создадим папку нашей странички page. Запустим веб-сервер Apache, кликнув по кнопке Start. Узнаем версию PHP, введя в консоли (Shell) команду php -v. Рис. 7. Запуск сервера с помощью XAMPP Проверим, запущен ли сервер, перейдя по адресу http://localhost/. Если появилось приветственное сообщение, значит сервер запущен. Рис. 8. Запуск сервера с помощью XAMPP на Windows 14. Собираем страничку Теперь создадим несколько PHP-файлов, из которых соберем страничку. Перейдем в папку page и создадим четыре файла: index.php, header.php, body.php, footer.php. Структура простого HTML-документа выглядит следующим образом: <!DOCTYPE html> <html> <head> <title>First page</title> </head> <body> <header> </header> <footer> </footer> </body> </html> Воспользуемся фреймворком Bootstrap, чтобы ускорить создание странички. Скачивать ничего не нужно, просто вставим ссылку на Bootstrap в тег <head>: <!DOCTYPE html> <html> <head> <title>First page</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous"> </head> <body> <header> </header> <footer> </footer> </body> </html> Откроем файл header.php и вставим в него следующий код: <!DOCTYPE html> <html> <head> <title>First page</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous"> </head> <body> <header> <ul class="nav justify-content-center"> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="#">Active</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Ссылка</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Ссылка</a> </li> </ul> </header> в файл body.php: <div class="card-group"> <div class="card"> <img src="https://upload.wikimedia.org/wikipedia/commons/2/27/PHP-logo.svg" class="card-img-top" alt="..."> <div class="card-body"> <h5 class="card-title">Что такое PHP?</h5> <p class="card-text">PHP — скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений. </p> <p class="card-text"><small class="text-muted">Добавлено 5 минут назад</small></p> </div> </div> <div class="card"> <img src="https://upload.wikimedia.org/wikipedia/commons/2/27/PHP-logo.svg" class="card-img-top" alt="..."> <div class="card-body"> <h5 class="card-title">Что такое PHP?</h5> <p class="card-text">PHP (англ. PHP: Hypertext Preprocessor — «PHP: препроцессор гипертекста»; первоначально PHP/FI (Personal Home Page / Form Interpreter), а позже названный Personal Home Page Tools</p> <p class="card-text"><small class="text-muted">Добавлено 8 минут назад</small></p> </div> </div> <div class="card"> <img src="https://upload.wikimedia.org/wikipedia/commons/2/27/PHP-logo.svg" class="card-img-top" alt="..."> <div class="card-body"> <h5 class="card-title">Что такое PHP?</h5> <p class="card-text">В области веб-программирования, в частности серверной части, PHP — один из популярных сценарных языков (наряду с JSP, Perl и языками, используемыми в ASP.NET).</p> <p class="card-text"><small class="text-muted">Добавлено 10 минут назад</small></p> </div> </div> </div> в файл footer.php: <footer> <nav aria-label="Page navigation example"> <ul class="pagination"> <li class="page-item"><a class="page-link" href="#">Назад</a></li> <li class="page-item"><a class="page-link" href="#">1</a></li> <li class="page-item"><a class="page-link" href="#">2</a></li> <li class="page-item"><a class="page-link" href="#">3</a></li> <li class="page-item"><a class="page-link" href="#">Вперед</a></li> </ul> </nav> </footer> </body> </html> в файл index.php: <?php include 'header.php'; include 'body.php' ; include 'footer.php'; Здесь: include – инструкция, которая подключает к PHP-сценарию другие сценарии. Также сценарии подключают с помощью инструкций require, include_once и require_once. Они отличаются по реакции на отсутствие подключаемого файла. Откроем страницу, перейдя на http://localhost:8000/ или http://localhost/page/. Должно получиться как на рис. 9. Рис. 9. HTML-страница, собранная из php-файлов *** Литература Робин Никсон. Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5; Котеров, Симдянов. PHP 7; Веллинг, Томсон. Разработка веб-приложений с помощью PHP и MySQL; Остальные книги указаны в нашей статье ТОП-10 книг по PHP: от новичка до профессионала. Шпаргалки Шпаргалка по PHP Основы 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.
PHP (от англ. препроцессор гипертекста) – язык программирования общего назначения, широко используемый в веб-разработке. Сценарии PHP можно внедрять непосредственно в код HTML. В этой статье мы пройдемся по основам программирования на PHP: синтаксису, объявлению переменных, массивам, условным операторам, циклам и функциям. Также запустим двумя способами веб-сервер на локальной машине и соберем страничку из нескольких файлов PHP и фреймворка Bootstrap. В конце статьи приведем список литературы и бесплатные курсы по PHP для новичков.
Для удобного кодинга нам понадобится редактор кода (IDE). Популярные:
Устанавливать PHP на компьютер и запускать веб-сервер мы будем в конце статьи в разделе «Собираем HTML-страницу». А пока для запуска PHP-сценариев достаточно добавить плагин Script в редакторе Atom.
Установка IDE Как установить Atom в Ubuntu и Windows читайте в нашем самоучителе по Python.
Чтобы запустить PHP-сценарий в Atom перейдем в закладку Packages → Script → Run Script, либо нажмем на клавиши Ctrl + Shift + B (рис. 1).
Packages
Script
Run Script
Ctrl + Shift + B
Рис. 1. Запуск php-скрипта в редакторе Atom
Код в PHP заключается в открывающий <?php и закрывающий ?> теги. Согласно стандарту кодирования PSR-12, закрывающий тег должен быть опущен в файлах, содержащих только код PHP. В конце строки ставят разделитель строк – точку с запятой ;. Если забыть поставить разделитель, то следующая строка кода соединится с предыдущей и интерпретатор PHP выдаст ошибку.
<?php
?>
;
Выведем на экран строку Hello World (заключена в кавычки) с помощью команды echo:
Hello World
echo
<?php echo 'Hello, World.'; // Hello, World.
через функцию print:
print
<?php print 'Hello, World.'; // Hello, World.
через функцию printf (выводит отформатированную строку):
printf
<?php printf('Hello, World.'); // Hello, World.
или через функцию print_r(), выводящую информацию в удобочитаемом виде:
print_r()
<?php print_r('Hello, World.'); // Hello, World.
Чтобы перенести строку используем символ n, который работает только в двойных кавычках:
n
<?php print_r("Hello, World.nHello, Coder."); /* Hello, World. Hello, Coder. */
PHP – язык со слабой типизацией, то есть перед объявлением переменной не нужно задавать ее тип. Чтобы объявить переменную, перед ее именем ставят знак доллара $:
$
$animal = 'Cat';
Здесь:
переменной animal присвоили значение Сat.
animal
Сat
Выведем на экран переменную animal:
<?php $animal = 'Cat'; echo $animal; // Cat
Одно значение можно присвоить нескольким переменным:
<?php $first_animal = $second_animal = $third_animal = 'Cat'; echo "$first_animal"; // Cat echo "$second_animal"; // Cat echo "$third_animal"; // Cat
Однострочный комментарий начинается с двух слешей // или хеш-символа #, а многострочный заключается в /* */:
//
#
/* */
<?php // однострочный комментарий # однострочный комментарий /* многострочный комментарий */
Строка – набор символов, заключенный в одиночные '' или двойные кавычки "":
''
""
<?php $first_animal = 'Cat'; $second_animal = "Dog";
Оператор конкатенации точка . соединяет левый и правый аргументы:
.
<?php $first_animal = 'Cat'; $second_animal = 'Dog'; $animals = $first_animal . $second_animal; echo "$animals"; // CatDog
Оператор присваивания с конкатенацией .= присоединяет правый аргумент к левому:
.=
<?php $first_animal = 'Cat'; $second_animal = 'Dog'; $third_animal = 'Giraffe'; $animals = $first_animal; $animals .= $second_animal; $animals .= $third_animal; echo "$animals"; // CatDogGiraffe
Чтобы перенести слово на новую строку воспользуемся символом переноса n, который работает только в двойных кавычках:
<?php $first_animal = "Catn"; $second_animal = "Dogn"; $third_animal = "Giraffe"; $animals = $first_animal; $animals .= $second_animal; $animals .= $third_animal; echo "$animals"; /* Cat Dog Giraffe */
Целое число (integer) не имеет дробной части:
<?php $number_one = 5678; // целое положительное число $number_two = -5678; // целое отрицательное число
Число с плавающей точкой имеет дробную часть и задается следующий образом:
<?php $number_one = 1.5678; // 1.5678 – положительное число с плавающей точкой $number_two = -1.5678; // -1.5678 – отрицательное число с плавающей точкой $number_three = 1.5678e0; // 1.5678 – положительное число с плавающей точкой $number_four = 1.5678e2; // 156.78 – положительное число с плавающей точкой $number_five = 1.5678E-2; // 0.015678 – положительное число с плавающей точкой
Чтобы узнать тип переменной воспользуемся функцией gettype(), а для преобразования числа с плавающей точкой в целое число функцией intval():
gettype()
intval()
<?php $number_one = 1.5678; // 1.5678 – положительное число с плавающей точкой echo gettype($number_one); // double $number_one = intval($number_one); echo $number_one; // 1 echo gettype($number_one); // integer
<?php echo 2 + 4; // 6 echo 2 / 4; // 0.5 echo 2 * 4; // 8 echo 2 - 4; // -2 echo 2 % 4; // 2 echo 2 ** 4; // 16
Мы можем сложить два числа через запись $number_one = $number_one + $number_two; или через сокращенную запись $number_one += $number_two;:
$number_one = $number_one + $number_two;
$number_one += $number_two;
<?php // полная запись $number_one = 1; $number_two = 3; $number_one = $number_one + $number_two; echo $number_one; // 4 // сокращенная запись запись $number_one = 1; $number_two = 3; $number_one += $number_two; echo $number_one; // 4
Чтобы сравнить значения используют операторы сравнения, которые возвращают true или false:
true
false
<?php echo 4 > 0; // 1 – true echo 4 <= 55; // 1 – true echo 4 != 5; // 1 – true echo 4 <=> 5; // -1 echo 4 <=> 4; // 0 echo 4 <=> 3; // 1
Если строка не содержит число, то интерпретатор PHP приводит значение строки к 0. Если в строке есть число и оно стоит после буквенных символов, то значение всей строки также приводится к 0. Если число стоит перед буквенными символами, то для сравнении берется только число.
<?php echo 0 == 'hello'; // true, так как 0 = 0 echo 0 == 'hello3555'; // true, так как 0 = 0 echo 0 == '3555hello'; // false, так как 0 не равно 3555 echo 3555 == '3555hello'; // true, так как 3555 равно 3555
Таблица 1. Операторы сравнения
Сначала считается выражение в скобках:
<?php print_r((2 * 4) + 5); // 13
Рис. 2. Условный оператор if в PHP
Оператор if выполняет код, если выполняется условие. В противном случае выполняется код после else, который переводится, как «иначе», «в другом случае».
if
Синтаксис оператора if-else
if (условие) выполнить_код else выполнить_другой_код
Напишем несколько условий с оператором if и if-else:
if-else
<?php if (2 < 5) { echo 'true'; } // true if (2 > 5) { echo 'true'; } else { echo 'false'; } // false
для проверки дополнительных условий используется оператор elseif:
elseif
<?php $number = 15; if ($number < 3) { echo 'Число меньше трех.'; } elseif ($number > 4 && $number < 10) { echo 'Число в промежутке от 4 до 10.'; } else { echo 'Число больше 10.'; } // Число больше 10
&& – логический оператор И. В нашем условии проверяемое число должно быть больше четырех и меньше десяти.
&&
И
Таблица 2. Логические операторы
Тернарный оператор сокращает запись проверяемого условия и имеет следующий синтаксис:
условие ? выполнить_код_если_истинно : выполнить_код_если_ложно:
Проверим, переменная n больше 10 или нет. Если значение n больше 10, уменьшим значение n на единицу (декремент). В противном случае увеличим на единицу (инкремент).
10
<?php $n = 5; $n > 10 ? $n-- : $n++; echo $n; // 6
Переключатель switch проводит нестрогое сравнение == значений и передает управление соответствующему оператору case. Если значение не совпадает со значением из case, тогда выполняется переход к оператору default.
switch
==
case
default
Синтаксис переключателя switch
switch (переменная) { case 'значение1': код break; case 'значение2': код break; default: код break; }
Напишем конструкцию из переключателя switch и двух операторов case:
<?php $n = 3; switch ($n) { case 1: echo "Число равно двум."; break; case 2: echo "Число равно пяти."; break; default: echo "Значение по умолчанию."; break; } // Значение по умолчанию.
Рис. 3. Цикл while в PHP
Оператор while выполняет код до тех пор, пока значение условия не станет ложным.
while
Синтаксис цикла while
while (условие) { // код }
Выведем на экран пять раз слово Hello.
Hello
<?php $m = 0; while ($m < 4) { $m++; echo "Hellon"; } /* Hello Hello Hello Hello */
Расшифровка:
while – обозначение цикла.
$m = 0 – начальное значение переменной m.
$m = 0
m
$m < 5 – условие, которое проверяется перед началом цикла.
$m < 5
$m++ – инкрементирование, то есть увеличение переменной на единицу.
$m++
echo "Hellon" – вывод на экран слово Hello каждый раз с новой строки n.
echo "Hellon"
Другой способ записи с помощью декремента в условии:
<?php $m = 4; while ($m--) { echo "Hellon"; } /* Hello Hello Hello Hello */
$m-- – декрементация, то есть уменьшение значения переменной на единицу. В это примере знак декремента -- стоит после переменной, поэтому мы получим четыре итерации (от 4 до 0).
$m--
--
Если поставить оператор декремента перед переменной --$m, то мы получим три итерации (от 4 до 1):
--$m
<?php $m = 4; while (--$m) { echo "Hellon"; } /* Hello Hello Hello */
Цикл do..while выполняется минимум один раз, так как условие выполнения цикла проверяется в конце итерации, а не в начале как в цикле while.
do..while
Синтаксис цикла do..while
do { // код } while (условие);
Напишем цикл, выводящий на экран четыре раза слово Hello:
<?php $a = 0; do { echo "Hellon"; $a++; } while ($a < 4); /* Hello Hello Hello Hello */
Рис. 4. Цикл for в PHP
Когда нам известно количество итераций, вместо цикла while лучше использовать цикл for.
for
Синтаксис цикла for
for (инициализация; условие_цикла; счетчик) тело_цикла
Цикл выполняется, до тех пор, пока условие истинно, то есть значение i не станет равным 4:
i
<?php for ($i=0; $i <= 4; $i++) { echo $i; } // 01234
Цикл foreach последовательно перебирает элементы массива.
foreach
Синтаксис цикла foreach
foreach (массив as переменная) { инструкция }
На каждой итерации переменной присваивается значение текущего элемента последовательности. Переберем все элементы массива и умножим каждый элемент на 3:
<?php $array = [1, 2, 3, 4]; foreach ($array as $number) { $number *= 3; echo $number; } // 36912
Рис. 5. Индексы элементов в массиве PHP
Массивы – упорядоченная коллекция элементов с доступом по индексу или ключу. Индексный массив создается двумя способами:
Через функцию array():
array()
<?php $a = array('Cat', 'Dog', 123); echo $a[1]; // Dog
и через квадратные скобки []:
<?php $a = ['Cat', 'Dog', 123]; echo $a[1]; // Dog
echo $a[1] – вывести на экран второй элемент массива.
echo $a[1]
Нумерация массива начинается с 0. В нашем случаем элементу массива Cat соответствует порядковый номер 0, Dog – 1, 123 – 2. Для обращения к элементу массива используется следующий синтаксис: $имя_массива[индекс_элемента].
0
Cat
Dog
1
123
2
$имя_массива[индекс_элемента]
Рекомендуется объявлять массив через квадратные скобки, так как эта запись компактнее.
Создадим пустой массив:
<?php $a = [];
Добавим в него несколько элементов и выведем на экран его содержимое:
<?php $array = []; $array[] = 'Cat'; $array[] = 'Dog'; $array[] = 123; print_r($array); /* Array ( [0] => Cat [1] => Dog [2] => 123 ) */
Чтобы добавить новый элемент мы использовали запись $имя_массива[] = новый_элемент. Первый добавленный элемент получает индекс 0. Индексы следующих элементов увеличиваются на 1. Можно задать индекс самостоятельно. Для этого в квадратных скобках укажем нужный нам индекс:
$имя_массива[] = новый_элемент
<?php $array = []; $array[100] = 'Cat'; $array[0] = 'Dog'; $array[33] = 123; print_r($array[0]); // Dog
При добавлении непронумерованного элемента 5000, значение его индекса будет на единицу большего максимального значения индекса в массиве – 101:
5000
101
<?php $array = []; $array[100] = 'Cat'; $array[0] = 'Dog'; $array[33] = 123; print_r($array); /* Array ( [100] => Cat [0] => Dog [33] => 123 ) */ $array[] = 5000; print_r($array); /* Array ( [100] => Cat [0] => Dog [33] => 123 [101] => 5000 ) */
Для удаления элемента из массива воспользуемся функцией unset():
unset()
<?php $array = ['Cat', 'Dog', 123]; unset($array[2]); print_r($array); /* Array ( [0] => Cat [1] => Dog ) */
unset($array[2]) – удаление третьего элемента массива.
unset($array[2])
В качестве индекса также используют строки:
<?php $array = []; $array['animal_one'] = 'Cat'; $array['animal_two'] = 'Dog'; $array['number'] = 123; print_r($array['animal_two']); // Dog
В таком случае мы получаем что-то напоминающее словари в других языках программирования с ключами и значениями. В PHP такой массив называют ассоциативным.
Ассоциативный массив объявляется через символы =>:
=>
$имя_словаря = ['ключ1' => 'значение1', 'ключ2' => 'значение2']
Создадим ассоциативный массив:
<?php $array = ['first_key' => 'Cat', 'second_key' => 5000]; print_r($array); /* Array ( [first_key] => Cat [second_key] => 5000 ) */
'first_key' – ключ.
'first_key'
'Cat' – значение.
'Cat'
Для поиска ключа по значению используем функцию array_search():
array_search():
<?php $array = ['first_key' => 'Cat', 'second_key' => 5000]; print_r(array_search('Cat' ,$array)); // first_key
array_search('Cat' ,$array) – поиск ключа, соответствующего значению Cat в массиве array.
array_search('Cat' ,$array)
array
Чтобы подсчитать количество элементов в массиве воспользуемся функцией count():
count()
<?php $array = ['first_key' => 'Cat', 'second_key' => 5000]; print_r(count($array)); // 2
Также можно создать многомерный массив:
<?php $array = ['animals' => ['Cat', 'Dog'], 'second_array' => [5000, 33, ['third_array' => ['Hello']]]]; print_r($array['animals'][1]); // Dog print_r($array['second_array'][2]['third_array'][0]); // Hello
'animals' => ['Cat', 'Dog'] – ключ animals с двумя значениями: Cat и Dog.
'animals' => ['Cat', 'Dog']
animals
'second_array' => [5000, 33, ['third_array' => ['Hello']]] – ключ second_array с тремя значениями: два числа 5000, 33 и массив, но уже со своим ключем third_array и значением Hello.
'second_array' => [5000, 33, ['third_array' => ['Hello']]]
second_array
33
third_array
Функция – подпрограмма, которая на входе принимает аргументы (бывают функции без входных аргументов), выполняет код и возвращает результат. Функциональное программирование упрощает жизнь программиста, так как не нужно копировать и вставлять фрагменты кода снова и снова. Достаточно обратиться к функции когда нужно и сколько угодно раз.
Существуют встроенные и пользовательские функции. Встроенные функции – print(), print_r() и так далее – придумали разработчики. Пользовательские функции программисты пишут самостоятельно.
print()
Синтаксис функции:
function имяФункции(аргументФункции1, аргументФункции2, ...) { код return результат }
function – мы говорим интерпретатору, что отсюда начинается функция.
function
аргументФункции – переменные, которые передаются функции для выполнения кода.
аргументФункции
имяФункции – чтобы вызывать функцию, ей нужно присвоить имя.
имяФункции
return – выдает результат работы функции.
return
Напишем и вызовем функцию, выводящую на экран фразу Hello, World.
Hello, World
<?php function helloMessage(){ return print("Hello, World."); } helloMessage(); // Hello, World. – вызов функции
До этого мы рассматривали функции без аргументов – переменных, которые функция получает извне. Напишем функцию с аргументами, которая считает сумму трех чисел:
<?php function summation($a, $b, $c){ return print($a + $b + $c); } summation(1, 2, 3); // 6 summation(100, 74, 8); // 182
$a, $b, $c – аргументы функции.
$a
$b
$c
Чтобы просмотреть HTML-страницу, собранную из нескольких PHP-файлов, установим и запустим веб-сервер, разместим файлы в определенной папке и обратимся к файлу через браузер.
Веб-сервер можно запустить несколькими способами:
Инструкция для Windows:
cd
cd php7
page
mkdir page
php -S localhost:8000 -t P:php7page
-S
localhost
8000
-t
Инструкция для Ubuntu:
sudo apt install php libapache2-mod-php php-mysql
php -S localhost:8000 -t /home/USERNAME/page
Чтобы проверить запущен ли сервер, перейдем по адресу http://localhost:8000/:
Рис. 6. Запуск встроенного в PHP веб-сервера
Если мы получили ошибку 404, значит сервер запущен.
Скачаем и установим XAMPP. В папке C:xampphtdocs создадим папку нашей странички page. Запустим веб-сервер Apache, кликнув по кнопке Start. Узнаем версию PHP, введя в консоли (Shell) команду php -v.
C:xampphtdocs
Start
php -v
Рис. 7. Запуск сервера с помощью XAMPP
Проверим, запущен ли сервер, перейдя по адресу http://localhost/. Если появилось приветственное сообщение, значит сервер запущен.
Рис. 8. Запуск сервера с помощью XAMPP на Windows
Теперь создадим несколько PHP-файлов, из которых соберем страничку. Перейдем в папку page и создадим четыре файла: index.php, header.php, body.php, footer.php.
index.php
header.php
body.php
footer.php
Структура простого HTML-документа выглядит следующим образом:
<!DOCTYPE html> <html> <head> <title>First page</title> </head> <body> <header> </header> <footer> </footer> </body> </html>
Воспользуемся фреймворком Bootstrap, чтобы ускорить создание странички. Скачивать ничего не нужно, просто вставим ссылку на Bootstrap в тег <head>:
<head>
<!DOCTYPE html> <html> <head> <title>First page</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous"> </head> <body> <header> </header> <footer> </footer> </body> </html>
Откроем файл header.php и вставим в него следующий код:
<!DOCTYPE html> <html> <head> <title>First page</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous"> </head> <body> <header> <ul class="nav justify-content-center"> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="#">Active</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Ссылка</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Ссылка</a> </li> </ul> </header>
в файл body.php:
<div class="card-group"> <div class="card"> <img src="https://upload.wikimedia.org/wikipedia/commons/2/27/PHP-logo.svg" class="card-img-top" alt="..."> <div class="card-body"> <h5 class="card-title">Что такое PHP?</h5> <p class="card-text">PHP — скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений. </p> <p class="card-text"><small class="text-muted">Добавлено 5 минут назад</small></p> </div> </div> <div class="card"> <img src="https://upload.wikimedia.org/wikipedia/commons/2/27/PHP-logo.svg" class="card-img-top" alt="..."> <div class="card-body"> <h5 class="card-title">Что такое PHP?</h5> <p class="card-text">PHP (англ. PHP: Hypertext Preprocessor — «PHP: препроцессор гипертекста»; первоначально PHP/FI (Personal Home Page / Form Interpreter), а позже названный Personal Home Page Tools</p> <p class="card-text"><small class="text-muted">Добавлено 8 минут назад</small></p> </div> </div> <div class="card"> <img src="https://upload.wikimedia.org/wikipedia/commons/2/27/PHP-logo.svg" class="card-img-top" alt="..."> <div class="card-body"> <h5 class="card-title">Что такое PHP?</h5> <p class="card-text">В области веб-программирования, в частности серверной части, PHP — один из популярных сценарных языков (наряду с JSP, Perl и языками, используемыми в ASP.NET).</p> <p class="card-text"><small class="text-muted">Добавлено 10 минут назад</small></p> </div> </div> </div>
в файл footer.php:
<footer> <nav aria-label="Page navigation example"> <ul class="pagination"> <li class="page-item"><a class="page-link" href="#">Назад</a></li> <li class="page-item"><a class="page-link" href="#">1</a></li> <li class="page-item"><a class="page-link" href="#">2</a></li> <li class="page-item"><a class="page-link" href="#">3</a></li> <li class="page-item"><a class="page-link" href="#">Вперед</a></li> </ul> </nav> </footer> </body> </html>
в файл index.php:
<?php include 'header.php'; include 'body.php' ; include 'footer.php';
include – инструкция, которая подключает к PHP-сценарию другие сценарии. Также сценарии подключают с помощью инструкций require, include_once и require_once. Они отличаются по реакции на отсутствие подключаемого файла.
include
require
include_once
require_once
Откроем страницу, перейдя на http://localhost:8000/ или http://localhost/page/. Должно получиться как на рис. 9.
Рис. 9. HTML-страница, собранная из php-файлов ***
Остальные книги указаны в нашей статье ТОП-10 книг по PHP: от новичка до профессионала.
Бесплатные курсы на русском языке:
***
Ваш адрес email не будет опубликован. Обязательные поля помечены *
Сохранить моё имя, email и адрес сайта в этом браузере для последующих моих комментариев.
Δ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.