PHP код, команды, операторы
PHP – язык серверный. Поэтому очень часто говорят, что необходим сервер для его изучения. Это действительно так. Однако, существуют сервисы, которые избавят вас от необходимости иметь сервер и позволят вам приступить к изучению PHP немедленно и спокойно писать php код и видеть результаты его исполнения.
Один из таких сервисов – PHP Sandbox. Весь PHP код, приведённый на этой странице, можно скопировать в PHP Sandbox
и сразу увидеть результат выполнения примеров. Это очень удобно, если вы только начали изучение РНР и сервера, где исполняется код, у вас пока нет.
В любом случае, для начала надо уяснить пару фундаментальных моментов, без которых PHP-код работать не будет ни на сервере ни на сервисе. PHP-код начинается со служебных символов:
<?php
Поскольку PHP-команды могут быть частью скрипта (кода программы), написанной на другом языке, а также включать в себя фрагменты другого кода, важно указывать не только начало PHP-кода, но и его конец:
<?php ?>
В конце PHP-команды (выражения) всегда должна стоять точка с запятой (;)
<?php
echo "Hello World!" ;
Полностью PHP-код или его фрагмент оформляется следующим образом:
<?php
echo "Hello World!" ;
?>
Если ваш скрипт (файл с кодом) содержит только PHP-код, закрывать (?>) его необязательно. Но открывающая часть должна присутствовать всегда! Поэтому если будете пользоваться вышеуказанным сервисом PHP Sandbox
, не забывайте указывать в первой строке <?php
Вторым обязательным условием для выполнения вашего PHP-кода является расширение файла со скриптом. Оно должно быть .php – index.php, script.php и т.п..
Теперь пару слов о том, когда и как PHP-код может соседствовать с кодом, написанным на другом языке программирования. Все языки программирования можно разделить на две категории: клиентские и серверные.
Ваш компьютер, отображающий сейчас эту страницу, – клиент
или клиентская машина. Компьютер, который вам эту страницу прислал – сервер
. Когда вы набираете в адресной строке yandex.ru
, вы делаете запрос к серверу, который по этому адресу находится и он выполняет действия по вашему запросу – формирует страницу и передаёт её в ваш браузер.
Самый часто используемый при создании сайтов серверный язык – PHP, самый известный клиентский – HTML. HTML обрабатывается вашим браузером (обозревателем), PHP – сервером. Упрощённо это выглядит так:
Поскольку HTML – язык клиентский, html-код любой страницы можно запросто посмотреть на клиенте
:
PHP - язык серверный. Клиент
получает результат выполнения php-скрипта по запросу. Т.е. нельзя посмотреть или изменить сам php-скрипт. Работать php-скрипт будет только на сервере. Поэтому для изучения PHP нужно этот самый сервер иметь (или воспользоваться PHP Sandbox).
Подробнее узнать о том, как установить и запустить сервер для изучения PHP, можно в статье: Локальный сервер для web-разработки
. Тут я опишу основы синтаксиса языка и разберу пару простых примеров, чтобы было понятно - как всё устроено и с чего начинать.
Проще (и полезнее) начать изучать PHP в контексте взаимодействия с HTML, создавая простые web-странички, внутри которых php-скрипт будет решать некоторые задачи. Скрипт php может быть включён в код html-страницы посредством вышеуказанной конструкции:
html-код
<?php
фрагмент кода php ;
?>
html-код
<?php
фрагмент кода php ;
?>
html-код
Важно понимать, что не достаточно просто разместить php-скрипт внутри html-страницы. Чтобы он выполнился, нужно сменить расширение html-страницы с .html на .php, иначе она обработана php-обработчиком не будет и результат выполнения кода вы так и не увидите (см. схему выше).
Синтаксис языка PHP
В PHP существуют типы данных. В зависимости от того, к какому типу принадлежат данные, результат выполнения действий над ними может быть разным. Вот наиболее часто встречающиеся в web-программировании:
Integer - целые числа, такие как 1, 2, -8, 340
Double - числа с плавающей точкой, например 423.48
Boolean - двоичный тип. true или false (1 или 0, правильно или ложно)
String - строки символов (или проще - текст)
Array - массивы данных (данные со множеством значений)
Важно отметить отличительную особенность типа String. Этот тип данных заключается в кавычки. То есть
4 - это тип данных Integer (целое число)
"4" - тип данных String (символ)
И хотя особенность PHP заключается в том, что тип данных можно не объявлять (обработчик сам определит), иногда нужно учитывать эти отличия, так как это может приводить к ошибке.
Команда PHP и первое практическое задание, с которого начинается большинство подобных статей – вывод строки при помощи команды echo. Она выводит информацию на страницу. Синтаксис (правило написания) такой:
echo "Приветствие!" ;
// Выведет слово Приветствие!
В PHP, как и в других языках, есть возможность делать пометки и оставлять комментарии прямо внутри кода. Для этого в начале строки (или в конце после php-кода) нужно ставить двойной слеш // В примере выше вы можете наблюдать пример комментария. Также в php для этих целей используют символ решётки #
echo "Приветствие!" ;
// комментарий php
# комментарий php
echo "Приветствие!" ; //комментарий в конце строки
Все выражения в PHP (кроме строк-комментариев) отделяются друг от друга точкой с запятой (;). Ставят её как правило в конце строки, а следующее выражение начинают с новой. Это очень важный момент, так как на практике отсутствие этого знака между выражениями вызовет ошибку.
Также немаловажную роль играет использование двойных и одинарных кавычек. Команда echo выводит данные как текст (тип string) только когда эти данные заключены в кавычки (в двойные или одинарные). Если в выводимой строке тоже присутствуют кавычки, нужно следить, чтобы они были у строки и команды разными:
//это касается всех данных вида string
echo "кавычки внутри 'echo' одинарные" ;
echo 'кавычки внутри "echo" двойные';
Также стоит учитывать способ обработки данных внутри кавычек. PHP обрабатывает содержиме двойных (") и одинарных (') кавычек по-разному. Внутри двойных кавычеках служебные символы (например, переменные $x) воспринимаются как есть и обрабатываются. Внутри одинарных кавычек все символы обрабатываются и выводятся как символы:
Спасибо Андрею, прокомментировавшему этот момент и обратившему моё внимание на него. Изначально я не описал эту особенность в статье, хотя различие в обработке двойных и одинарных кавычек – важный момент. Имевший место даже для одного из простых примеров, приведённых ниже в этой статье.
При использовании кавычек следует учитывать то, что кавычки идут парами - открывающая и закрывающая. Если нужно вывести код, содержащий кавычки при помощи echo, то следует этот момент учитывать. Иногда в виде строки выводят код, содержащий в себе оба вида кавычек.
В этом случае кавычку можно экранировать, т.е. указать обработчику PHP не учитывать этот символ. Экранируются символы обратным слэшем:
echo "экранируем кавычки внутри \"echo\" " ;
Переменные в PHP
Очень широко в PHP применяются переменные, вроде переменных X и Y в алгебре. Однако, для обработчика php-кода Х и У - всего лишь символы, поэтому переменные в PHP принято указывать при помощи символа $:
$Х, $У
Переменные могут представлять собой любой тип данных:
$Х = 32 ; //(Integer)
$У = "width=40%" ; //(String)
Правилом хорошего тона является именование переменных с отражением их назначения. Например, переменная, хранящая какие-то данные счётчиков, именуется $count, а переменная, хранящая данные с текстом почтового сообщения пользователля - $user_mail.
Одним из способов вывод переменных на страницу является вывод посредством команды echo:
$number = 12 ;
echo $number ;
// выведет 12
Важно помнить разницу между обработкой двойных и одинарных кавычек:
$number = 12 ;
echo "В году $number месяцев" ;
// выведет В году 12 месяцев
echo 'В году $number месяцев' ;
// В году $number месяцев
Таким образом, используя echo с двойными кавычками, вы можете выводить переменные прямо внутри строки. Иногда это бывает удобно.
Операторы и операнды
Помимо типов данных существуют такие определения, как операторы и операнды. Над операндами производят действия с помощью операторов. Рассмотрим на простом примере. Сложим два числа: 2+3 .
2 и 3 - это операнды, а знак сложения - оператор. Все вместе это называется выражением. Операторов достаточно много. Их полный список можно без труда найти в интернете или учебнике. Тут я приведу несколько арифметических операторов для примера. В качестве операндов возьмем числа 7 и 2:
// присваиваем переменной значение 7
// оператор присвоения значений: =
$x = 7 ;
echo $x ; //выводит 7
Стоит отметить, что символ равенства (=) – это оператор присвоения значения, а не равенства одного значения другому. Выражение 7=7 приведёт к ошибке, т.к. числу 7 нельзя присвоить значение 2 и вообще присвоить значение можно только переменным величинам. Правильной в этом случае будет запись 7==7 (оператор равенства == рассмотрим ниже).
// оператор сложения: +
//присваиваем $num1 значение 7+2 (9)
$sum1 = 7 + 2 ;
//присваиваем $num2 значение $sum1+5 (14)
$sum2 = $sum1 + 5 ;
//выводим на экран $num2 (14)
echo $sum2 ;
// оператор вычитания: -
$min1 = 7 - 2 ;
$min2 = $min1 - 4 ;
echo $min2 ; //выводит 1
// оператор умножения: *
$multi = 7 * 2 ;
echo $multi ; //выводит 14
// оператор деления: /
$divide = 7 / 2 ;
echo $divide ; //выводит 3.5
//тип данных Double
// оператор остатка от деления: %
$divide2 = 7 % 2 ;
echo $divide2 ; //выводит 1
//тип данных Integer
Поясню работу последнего из приведённых операторов, поскольку она не для всех может быть очевидна из примера. Число 7 делится на 2. При простом делении получается 3.5, но в данном случае в расчёт берутся целые числа. Таким образом, в вычислении учитывается не 3.5, а целое число 3. А остаток получается из выражения: 7=(3*2)+1. Поэтому в остатке указана единица.
Условный оператор if
Выше я писал о том, что чаще всего ознакомительные статьи начинаются спримеров использования echo. Это одна из самых часто используемых (и простых) команд. Не менее популярным является условный оператор if. Он также достаточно прост и применяется для описания условий, при которых код либо выполняется, либо нет.
Условный оператор if поможет разобрать несколько других операторов, работу которых без него наглядно продемонстрировать сложно. Синтаксис у if следующий:
//если (условие выполняется) - действие
//в противном случае - другое действие
//if (условие) {действие} ;
//else {другое действие} ;
//пример
$y = 7 ;
if ( $y == 7 ) {
echo "переменная равна 7" ;
}
else {
echo "переменная не равна 7" ;
}
Теперь рассмотрим работу операторов сравнения при помощи условного оператора. Начнём с оператора равенства, о котором я упоминал выше:
// оператор равенства ==
if ( 7 == 7 ) {
$result = "верно (true)" ;
}
else {
$result = "ложно (false)" ;
}
echo $result ; //выводит ложно (false)
//тип данных Boolean
Исходя из примера выше, арифметическое выражение 2+3=5 в переводе на язык php будет иметь следующий вид: 2+3==5
// оператор неравенства: !=
if ( 7 != 2 ) {
$result2 = "верно (true)" ;
}
else {
$result2 = "ложно (false)" ;
}
echo $result2 ; //выводит верно (true)
//тип данных Boolean
// оператор больше: >
if ( 7 > 2 ) {
$result3 = "верно (true)" ;
}
else {
$result3 = "ложно (false)" ;
}
echo $result3 ; //выводит верно (true)
//тип данных Boolean
// оператор меньше: <
if ( 7 < 2 ) {
$result4 = "ложно (false)" ;
}
else {
$result4 = "верно (true)" ;
}
echo $result4 ; //выводит ложно (false)
//тип данных Boolean
Любой из приведённых примеров можно скопировать в текстовой файл, поменять расширение файла на .php и при помощи локального сервера посмотреть как всё это выполняется, а также поэкспериментировать. Также можно скопировать и вставить в PHP Sandbox.
Использование переменных
Переменной может быть строка, содержащая другую переменную или даже целый набор переменных:
$rub = "500" ;
$cash = "Стоимость $rub рублей" ;
echo "$cash" ;
//выводит Стоимость 500 рублей
Однако, в некоторых случаях подобный вариант использовать невозможно, потому что если использовать переменную внутри строки, то нужно отделять её пробелами. В следующем примере этого сделать нельзя:
$file = "index" ;
$file_name = "$file.html" ;
В результате выполнения этого кода значением переменной $file_name станет не index.html, а $file.html, что вызовет ошибку при дальнейшем использовании переменной $file_name. Поскольку переменную в данном случае предполагается совместить (склеить) с текстом, необходимо использовать оператор совмещения строк - точку (.), который склеивает строки и (или) переменные в одно целое в различных сочетаниях. Пример:
$file = "index" ;
$file_name = $file.".html" ;
//склеивает переменную $file и строку ".html"
echo $file_name;
// выводит index.html
echo "поп"."уляр"."ность";
// склеивает 3 строки и выводит "популярность"
Данный оператор можно использовать в совокупности с оператором присвоения:
$word = "поп";
$word .= "уляр";
$word .= "ность";
echo $word;
//выводит популярность
Строки и переменные можно склеивать в разном порядке:
$word = 'популярность';
$attempt = 'катастрофически';
echo $word.' ваша снижается '.$attempt.'!';
// выведет: популярность ваша снижается катастрофически!
Надеюсь, все понятно. Теперь перейдем к более сложным и более практичным примерам использования команд PHP.
Использование PHP при создании сайтов
Допустим, стоит задача сделать простой информационный HTML-документ (сайт) в две колонки – в одной меню, в другой информация. Создаётся таблица с двумя колонками, в левую помещается html-код меню, а в правую текст (информация):
<table>
<tr>
<td>
html-код меню
<td>
<td>
html-код контента
<td>
<tr>
<table>
Допустим, что нужно создать 5 страниц с различной информацией, связав их между собой меню. Одинаковый код меню придётся разместить на каждой из пяти страниц. И если меню изменится (добавится 6-ая страница), нужно будет внести одинаковые правки в каждый файл. Когда страниц 5 это не проблема, когда их 50 – задача становится трудоёмкой.
PHP позволит избежать этой рутинной работы путём выноса повторяющихся (одинаковых) участков кода в отдельный файл, который будет подгружаться в код основного файла по запросу. Чтобы подгружать меню, воспользуемся выражением include, позволяющим включать содержимое одного файла в тело другого. Пару слов об include:
//синтаксис работы include:
include 'адрес_и_имя_файла';
//пример
include 'pages/info.html';
Таким способом можно включать текстовые файлы различных расширений (.txt, .html, .php и другие). Вернёмся к примеру с сайтом. Нам необходимо вынести код меню в отдельный файл, чтобы избежать дублирования кода и иметь возможность редактировать его с минимальными трудозатратами. Пусть это будет файл menu.html.
Помимо файла меню у нас имеются пять файлов с информацией (текстом), доступ к которой мы осуществляем через него. Сама страница, на которую должна выводится информацию, также может содержать код оформления, который придётся дублировать для каждой новой информационной страницы. И если вдруг встанет задача поменять оформление страниц, то повторится ситуация с множественными одинаковыми исправлениями.
PHP позволяет минимизировать и эти работы. Файл меню мы добавляем при помощи include, таким же образом можно подгужать на страницу и файл с текстом. При этом у нас получится 1 файл с меню, 1 файл с оформлением страницы и 5 файлов с информацией. Таким образом мы сможем полностью отделить навигацию (меню) и оформление страницы (шаблон страницы) от информации (контента).
Файл меню мы уже обозначили как menu.html. Файл шаблона пусть будет index.php (указываем расширение php, т.к. шаблон будет содержать php-код). Файлы с информацией пусть будут info_1.html, info_2.html b т.д..
Нажав на пункт меню, мы осуществляем переход к нужной информации. Осталось сообщить шаблону (index.php) какой информационный файл загружать. Для этого мы передадим ему в ссылке меню параметр, который будет содержать номер страницы, которую мы хотим получить.
Параметр так и назовём – page. Параметры в ссылках указываются при помощи знака вопроса. Получим:
адрес нашего шаблона:
http://www.mysite.ru/index.php
пример гиперссылки с параметром (запрос страницы №2):
http://www.mysite.ru/index.php?page=2
Возвращаемся к коду шаблона index.php. Он содержит таблицу с двумя колонками, в которые загружается меню и информация при помощи include. Код получится следующий:
<table>
<td>
<?php
include "menu.html" ;
?>
<td></td>
<?php
include "info_".$_GET['page'].".html" ;
?>
</td>
<table>
Давайте разберемся более подробно. $_GET – глобальный массив данных в PHP, который записывает и хранит все параметры, которые передаются странице в ссылках в открытом виде. Мы, обратившись к index.php, передали в ссылке параметр page. Теперь параметр будет доступен внутри шаблона index.php. Запросить (получить) его можно при помощи выражения $_GET['page'].
Передавали мы двойку (2). Нам нужно получить готовый адрес страницы info_2.html, который нужен для include. Вспоминаем оператор совмещения строк (точку). С его помощью мы склеиваем строки "info_" и ".html" с переданной двойкой (2) и получаем готовый адрес info_2.html . Вся цепочка действий:
- Нажимаем на ссылку. Обозреватель посылает запрос на сервер:
http://www.mysite.ru/index.php?page=2 - На сервере параметр page записывается в глобальный массив $_GET
- Запускается скрипт index.php, к которому мы обратились, выражение include вставляет в шаблон код меню из файла menu.html.
- Далее скрипт index.php получает из глобального массива $_GET переданное значение $_GET['page'], равное двум (2).
- Затем данные склеиваются "info_".$_GET['page'].".html" и передаются оператору include, который импортирует в шаблон index.php информацию, содержащуюся в файле: include "info_2.html"
- Скрипт index.php заканчивает работу и сервер передаёт в обозреватель результат. В окне обозревателя выводится страница, содержащая две колонки - с меню и текстом.
Функции PHP
Функция – это набор инструкций. Она получает параметры, обрабатывает их согласно этому набору и возвращает результат. Пример простейшей функции:
// функция имя_функции( параметр_1, параметр_2 ){ инструкции }
function show_text( $param_1, $param_2 ){
$result = $param_1 + $param_2 ;
echo $result ;
}
// Вызов функции
show_text( "3" , "5" ) ;
Можете в SandBox поэкспериментировать и написать свою функцию, используя примеры с операторами выше. Это не сложно:
В PHP существует огромное количество готовых функций для решения различных задач. Их можно использовать по-отдельности, а также включать их в состав друг-друга и тех функций, которые вы напишете самостоятельно.
Выводы
Это даже не десятая часть того, с чем нужно ознакомиться новичку. Но этого досточно, чтобы понять принцип работы PHP с данными и фапйлами и уже написать пару простых примеров самостоятельно. А также лучше понимать другую информацию по данной теме.
Ещё раз вернусь к схеме обработки запросов на сервере, теперь (я надеюсь), она стала более понятной:
Очень важно следить за последовательностью команд. Тут почти как с каскадностью в CSS. Прежде чем использовать переменную, необходимо присвоить ей значение:
//Последовательность действий:
$X = 3 ;
$Y = $X + 5;
echo $Y;
Обработчик не возвращается, если это явно не указано php-программой. При обработке встречается переменная. Значение было? Значения не было. Нет значения - нет переменной. А далее или ошибка или неправильная работа программы. Так что будьте внимательны!
В PHP встречаются команды, результат выполнения которых одинаков, но алгоритм выполнения разный , что дает возможность избежать ошибок, применяя ту или иную команду в зависимости от ситуации. Например, оператор include делает включение в файл в процессе выполнения php-программы. Оператор require делает то же самое, но не в процессе ее выполнения, а непосредственно при запуске скрипта.
Напоследок расскажу о паре моментов, которые часто игнорируют и получают ошибки undefined variable. При использовании условий часто пишут конструкции вида:
// объявляем переменную
$variable = '';
// произвольный код...
if($variable) {
действие....
}
При этом появляются ошибки категории Notice
, т.е. уведомительного, а не критического характера. Всё работает, но хорошо бы исправить.
Это происходит потому что данное условие (проверка) предполагает не наличие самой переменной, а наличие данных, которые она содержит. Если данные в переменную не записывались, то будет notice-ошибка. Для правильной проверки нужно использовать специальную функцию.
// объявляем переменную
$variable = '';
// ! - оператор отрицания, читается как "если не пустой, то действие"
if( !empty( $variable ) ) {
действие....
}
// без оператора отрицания - "если пустой, то действие"
if( empty( $variable ) ) {
действие....
}
Представьте, что в примере выше, где мы собирали файл с меню и текстом, не был передан параметр. Или был, но файла с таким номером не существует. Тогда результат работы include будет такой:
// запрос без параметра сформируется как info_.html
include "info_".$_GET['page'].".html" ;
// выдаст ошибку, т.к. файл info_.html не существует
Чтобы этого не произошло, надо использовать условный оператор if else и проверку на существование переменной с параметром empty(), а также проверять - находится ли параметр в диапазоне от 2 до 5. Чтобы можно было проследить работу примера в SundBox, заменю $_GET['page'] на переменную $page_param, а include на echo:
<?php
$page_param = "7" ;
if( !empty( $page_param ) AND $page_param > 1 AND $page_param < 6 ) {
$page = $page_param ;
} else {
$page = 1 ;
}
echo "info_".$page.".html" ;
AND - логический оператор И, OR - логический оператор ИЛИ. С их помощью можно комбинировать условия для if else.
Читается так: если $page_param не пустой И он больше единицы И он меньше шести, то присвоить переменной $page значение $page_param, в противном случае присвоить $page единицу. Вывести $page.
Таким образом, если переменная не будет равна числу от 2 до 5, то будет загружена информация из файла info_1.html
И последнее: если переменная выполнила своё предназначение и далее в скрипте не понадобится, её можно уничтожить:
// объявляем переменную
$variable = '';
// произвольный кусок кода...
if( !empty($variable) ) {
действие....
}
// уничтожаем переменную
unset( $variable );
Как я уже отмечал выше, это только малая часть информации, которую стоит изучить, но делать статью ещё объёмнее я не решалися, т.к. боялся утомить читателей.
Web-разработка требует определённых инструментов и условий для работы. В первую очередь это конечно же наличие выхода в интернет. Большинство web-приложения пишутся на различных языках программирования. Часть из них - серверные. Например, широко известный язык PHP.
Для изучения PHP необходим сервер. Можно воспользоваться бесплатным хостингом с поддержкой PHP, но проще и удобнее развернуть локальный сервер на своём компьютере. О том, как это сделать читайте в статье.