php что это значит
Определение и особенности языка PHP
Что такое PHP
Начнём с определения того, чем именно является PHP. Сложно в одном предложении дать полное представление об этом языке, поэтому опишем его следующими тремя характеристиками:
PHP — это препроцессор гипертекста (HTML).
PHP — это серверный язык программирования.
PHP — это скриптовый, интерпретируемый язык программирования.
Зачем нужен PHP
Поясним каждое из определений и узнаем, в каких задачах будет полезен PHP.
Основная задача PHP — это «оживление» HTML страниц.
Обычные HTML-страницы статичны. Статичность (или неизменность) означает, что после того, как страницу создали и загрузили на сайт, при каждом обращении к этой странице браузер покажет её любому пользователю в неизменном виде.
Но этого не всегда достаточно.
Почти всегда пользователи приходят на сайт за информацией, которая всё время меняется, и нужно отображать её актуальное состояние. Например:
Если использовать только HTML, то решить такие задачи не получится. Здесь-то нам и понадобится PHP. Он принимает входящий запрос от веб-сервера, выполняет сценарий и возвращает веб-серверу результат в виде готового HTML-код. Сервер отправляет этот результат в браузер пользователю, который, в свою очередь, отображает её пользователю. После этого видно свежий курс валют, погоду, и что угодно ещё.
РНР позволяет изменять веб-страницу на сервере непосредственно перед тем, как она будет отправлена браузеру. Давайте разберёмся, как это работает. PHP умеет исполнять код — так называемые сценарии. В ходе исполнения PHP может изменить или динамически создать любой HTML-код, который и является результатом исполнения сценария. Затем сервер отправляет этот код браузеру. При этом браузеру не известно, как была сформирована данная страница — статично сверстана верстальщиком, или динамически создана при участии PHP. Это не важно, т.к. браузер всегда работает только с тем, что получил от сервера.
Давайте запомним, что сценарий — это программа, которая находится на стороне сервера и запускается в ответ на запрос от браузера.
Выполнение сценария также называют его интерпретацией, а сам PHP — интерпретатором.
Вы можете попрактиковаться в создании динамических страниц с помощью PHP в этом тренажёре.
Где используется PHP
Основная сфера применения языка PHP — это веб, то есть сайты, которые мы каждый день посещаем через браузер компьютера или смартфона. Важно понимать, что веб — это не весь интернет, а только самая большая и популярная его часть. Кроме веба через интернет работает электронная почта, мессенджеры, файлообменные сервисы, сетевые игры и многое другое.
Практически каждый сайт, который есть в интернете, работает на PHP. Этот язык отлично подходит для любых динамических веб-сайтов, среди которых:
Установка и использование
На нашем курсе мы будем работать с версией PHP 8
Где скачать PHP?
Мы рекомендуем использовать программную сборку OpenServer. После загрузки и установки на вашем компьютере появятся свежая версия PHP, веб-сервер, база данных, и много других программ и инструментов для удобной работы. Подробнее об установке и использовании мы рассказываем на первой лекции.
Как выглядит PHP-сценарий
Типичный PHP-сценарий — это набор выражений. Каждое выражение начинается с новой строчки и заканчивается точкой с запятой.
Выражение — это инструкция, которая приказывает PHP-интерпретатору выполнить одно действие, например, сложить два числа или вывести на экран информацию. Давайте посмотрим на самый простой сценарий. Он будет выводить на экран одну строку: «Привет, Мир!»:
В нашем примере сценарий состоит из всего одной инструкции: print(«Привет, мир»);
Здесь мы просим функцию print вывести на экран наш текст — «Привет, Мир!». Это можно рассматривать как подлежащее и сказуемое в русском языке, где функция print — это сказуемое, а «Привет, Мир!» — подлежащее.
Как мы уже знаем, PHP можно встроить в статичные HTML-файлы и модифицировать их с помощью инструкций. Вот как будет выглядеть тот же пример с выводом текста, но расположенный внутри HTML:
Потренироваться вставлять код на PHP в разметку можно в этом задании.
Php что это значит
В Википедии имеется статья по теме «PHP»
PHP (произносится пи-эйч-пи́) — скриптовый язык программирования, созданный для генерации HTML-страниц на веб-сервере и работы с базами данных. На сегодняшний момент поддерживается подавляющим большинством представителей хостингов. Входит в «LAMP» — «стандартный» набор для создания веб-сайтов.
Содержание
Комментарии [ править ]
PHP предоставляет несколько методов для вставки комментариев. Проще всего пользоваться двойной косой чертой (//), после чего PHP-машина игнорирует всё, что расположено до конца строки. Также можно пользоваться многострочными комментариями в стиле «C» / «С++» (/*…*/). Для однострочных комментариев можно ещё пользоваться символом решётки (#) (комментарий сценарных языков операционной системы «UNIX»).
Следует помнить о том, что стили комментариев PHP действуют только внутри ограничителей PHP. Если PHP встретит эти символы комментариев вне ограничителей, то они, как и любой текст, будут помещены на HTML-страницу. Например:
Переменные [ править ]
В РНР — переменные начинаются со знака доллара ($). За этим знаком может следовать любое количество буквенно-цифровых символов и символов подчёркивания, но первый символ не может быть цифрой. Следует также помнить, что имена переменных в РНР чувствительны к регистру, в отличие от ключевых слов.
При объявлении переменных — в РНР не требуется явно указывать тип переменной; при этом, одна и та же переменная может иметь, на протяжении программы, разные типы.
Функции вывода [ править ]
В PHP существует несколько способов вывести что-либо в веб-страницу:
Средство | Результат |
---|---|
Операторы echo и print | Выводят значение аргумента, одним и тем же образом. Различие: print — всегда возвращает «1»; echo — ничего не возвращает. |
Функция print_r() | Позволяет корректно выводить массивы. |
Функция var_dump() | Выводит переменную вместе с типом. Очень удобный инструмент для отладки. |
Вывод различных функций [ править ]
Аргумент | echo | print_r() | var_dump() |
---|---|---|---|
1 | 1 | 1 | int(1) |
1.1 | 1.1 | 1.1 | double(1.1) |
false | bool(false) | ||
array( 1, 2, 3 ) | Array | Array |
Типы данных в РНР [ править ]
Как уже было сказано, PHP предоставляет определённую гибкость в отношении типов переменных, — то есть, с одной и той же переменной, на протяжении программы можно работать и как со строкой, и как с числом. Однако несмотря на это, в РНР существует набор основных типов данных, которые могут явно указываться при работе с переменными:
Обозначение | Тип данных |
---|---|
integer | Целое число. |
string | Строка символов. |
boolean | Двоичное данное (либо «Истина», либо «Ложь»). |
double | Десятичное число; 1—2 значащих разряда в дробной части. |
float | Десятичное число с плавающей точкой. Более 2 значащих разрядов в дробной части. |
array | Массив объектов. |
object | Объект. |
NULL | Пустой тип. |
Resource | Ресурс. |
Соответственно, выполнение следующего кода приведёт к тому, что РНР вернёт «integer»:
Внешние переменные [ править ]
После того, как запрос клиента проанализирован веб-сервером и передан РНР-интерпретатору — последний устанавливает ряд переменных, которые содержат данные запроса и доступны всё время его выполнения.
Если Вы сохраните этот фрагмент кода в виде HTML-файла и откроете его в веб-браузере, то увидите форму ввода. Если в строке «HDD» набрать какой-либо текст (к примеру, «Maxtor»), и также в строке «CD-ROM» (например, «Nec»), то по нажатию на «Отправить» будет составлен запрос:
Константы [ править ]
Константы объявляются в РНР при помощи функции define() :
Первый параметр этой функции — имя константы, второй — её значение. При использовании константы на неё ссылаются по имени:
Операторы [ править ]
Математические операторы [ править ]
В PHP, как и в любом другом языке программирования, есть базовый набор математических операторов:
Инкремент и декремент [ править ]
Операторы сравнения [ править ]
Существуют следующие операторы сравнения:
Операторы присвоения [ править ]
Для присвоения переменной нового значения используется оператор « = »:
Поразрядные операторы [ править ]
Эта группа операторов работает с битовыми представлениями значений целочисленных операндов. В основном эти операторы применяются для создания набора булевых флагов:
Оператор | Операция |
& | Поразрядная конъюнкция (AND). |
| | Поразрядная дизъюнкция (OR). |
^ | Поразрядное исключающее ИЛИ (XOR). |
Поразрядное отрицание (NOT). | |
Битовое представления значения левого целочисленного операнда сдвигается влево, на количество разрядов, равное значению правого целочисленного операнда. | |
>> | Битовое представление значения левого целочисленного операнда сдвигается вправо, на количество разрядов, равное значению правого целочисленного операнда. |
Операторы ветвления алгоритмов (if… elseif… else…) [ править ]
Оператор if позволяет выполнять определённый код только при выполнении определённого условия:
Этот код выводит следующие строки:
Чтобы выполнять код, только если условие не выполнилось — можно использовать блок else :
Можно использовать инструкцию elseif (англ. «иначе, если»):
Переключатель (switch) [ править ]
Вышенаписанный пример выведет: «Переменная имеет значение „A“» — и то же выведет следующий пример:
Операторы цикла [ править ]
Операторы цикла задают многократное исполнение операторов в теле цикла. В PHP определены 4 разных оператора цикла:
Если 3 первых оператора цикла берут своё начало от «С»-подобных языков, то последний оператор позаимствован у языка «Perl».
while [ править ]
Оператор while называется оператором цикла с предусловием. При входе в цикл вычисляется выражение условия, и, если его значение отлично от нуля, выполняется тело цикла. Затем — вычисления выражения условия и операторов тела цикла выполняется до тех пор, пока значение выражения условия не станет равным нулю. Оператором while удобно пользоваться для просмотра всевозможных последовательностей, если в конце них находится заранее известный символ. (Это очень удобно в «C++», — к примеру, для определения длины строки, — поскольку в «С++», по определению, строка есть последовательность символов типа «char», заканчивающаяся нулевым символом: \0 ).
Пример простейшего цикла while :
Этот код выдает в окне браузера цифры от одного до пяти.
Чтобы перейти в следующую итерацию применяется continue :
В этом примере выводятся цифры «1»—«7», за исключением «5».
Заметим, что если Вы расположите условный оператор после операторов echo — код будет ошибочным (т.к. выведутся все цифры, включая «5»), поскольку проверка условия выхода из итерации будет происходить уже после полного выполнения этой итерации.
Бесконечный цикл реализуется при помощи оператора while следующим образом:
Примечание: в PHP стандартное время исполнения скрипта — 30 секунд (эту настройку можно изменить в файле «php.ini»); по его прошествии с начала выполнения скрипта действие скрипта будет прервано. Таким образом, наибольшее время выполнения «бесконечного» цикла (без изменения настроек) — полминуты.
do… while… [ править ]
Этот оператор называется оператором цикла с пост-условием. При входе в цикл в любом случае выполняется тело цикла (то есть цикл всегда будет выполнен хотя бы один раз); затем — вычисляется условие, и если оно не равно «0», то вновь выполняется тело цикла и проверка условия. В нижеследующем примере — «нуль» всегда будет добавлен в список, независимо от условия (++$i :
Цикл с постусловием бывает полезен при обработке некоторых последовательностей — когда обработку нужно заканчивать не «до», а «после» появления концевого признака.
Бесконечный цикл реализуется так:
for [ править ]
Как уже говорилось, итерационный цикл имеет следующий формат:
Здесь expression1 (инициализация цикла) — последовательность определений и выражений, разделяемая запятыми. Все выражения, входящие в инициализацию, вычисляются только один раз, при входе в цикл. Как правило, здесь устанавливаются начальные значения счётчиков и параметров цикла. Смысл выражения-условия expression2 — такой же как и у циклов с предусловиями; при отсутствии выражения-условия предполагается, что его значение всегда истинно. Выражения expression3 вычисляются в конце каждой итерации после выполнения тела цикла.
В следующем скрипте мы по традиции выведем числа от «0» до «5»:
Результат аналогичен показанному для «do… while…».
foreach [ править ]
Оператор цикла foreach предназначен для работы с элементами массива. Следующий код превратит все элементы массива в единицы:
Тернарный оператор «?:» [ править ]
Строковые функции PHP [ править ]
Грамотно работать со строками очень важно для программиста. Строковых функций в PHP немало, причем многие из них, так или иначе, просто дублируют друг друга. Однако, приёмы работы с основными блоками функций (функции поиска и замены в тексте, функции удаления пробельных символом (trim-функции), функции форматного вывода) надо представлять очень чётко.
Вообще говоря, по определению, строка — это последовательность символов типа char, которая заканчивается нулевым символом. Поэтому можно, конечно, радоваться тому, что при работе со строками нам не приходится жонглировать указателями в стиле «C»/»C++», однако не стоит забывать о том, что цена этому удобству — быстродействие. Поэтому некоторые приводимые здесь функции мы будем обсуждать в том числе и с точки зрения их быстродействия.
Функция «htmlspecialchars» [ править ]
Эта функция преобразовывает некоторые специальные символы HTML в другой формат. При этом они будут отображаться без учёта их специального назначения.
Корректное формирование и вывод гиперссылки, содержащей определённые параметры:
Заметьте, что следующий (ниже представленный) код содержит грубое нарушение, так как формирует гиперссылку с атрибутом, содержащим незаконченную (не закрытую) ссылку на сущность (&…;) :
Это довольно часто встречаемая ошибка.
Функции поиска в тексте [ править ]
substr() [ править ]
Функция substr() возвращает часть строки. Например:
Где «3» — точка отсчёта, а «7» — длина изымаемой строки. Если же требуется вести отсчёт от конца строки — используйте отрицательное значение.
Эта функция разобьёт число по трём разрядам:
Для работы с разными кодировками используется функция:
strpos() [ править ]
int strpos (string haystack, string needle [, int offset])
Возвращает позицию первого вхождения подстроки needle (в переводе с английского — «иголка») в строку haystack (в переводе с английского, как вы уже догадались, — «стог сена»). Необязательный аргумент offset позволяет указать, с какого по счёту символа строки haystack начинать поиск.
Эта функция определяет модель браузера:
strrpos() [ править ]
Возвращает позицию последнего вхождения символа:
int strrpos (string haystack, string needle [, int offset])
Начиная с «PHP 5» необязательный аргумент offset позволяет указать, с какого по счету символа строки haystack начинать поиск. Отрицательное значение предписывает прекратить поиск при достижении определенной позиции до конца строки.
Эта функция достаёт из URL имя файла (только пример; в жизни, можно использовать функцию basename() ):
strstr(), stristr() [ править ]
Возвращает подстроку строки haystack : начиная с индекса первого вхождения подстроки needle — до конца строки. Функция stristr() выполняет ту же функцию, но не чувствительна к регистру.
Для работы с разными кодировками используются функции:
где параметр encoding — название используемой кодировки символов (например «UTF-8»); если этот параметр опущен — используется внутренняя кодировка.
strchr() [ править ]
strrchr() [ править ]
Возвращает подстроку строки haystack : начиная с последнего вхождения needle — до конца строки.
Если needle состоит более чем из одного символа — используется только первый символ.
Если needle не является строкой — он приводится к целому и трактуется как код символа.
substr_count() [ править ]
Можно использовать или текст в кавычках (или апострофах), или переменные.
strspn() [ править ]
Находит длину начального сегмента маски.
strcspn() [ править ]
Определяет отсутствие начальных символов в строке.
Система пользователей [ править ]
В этой статье будет описаны алгоритмы системы пользователей и их коды на языке PHP.
Регистрация [ править ]
Алгоритм регистрации — самый простой из тех, что мы будем здесь использовать. Серверу предстоит записать:
Авторизация пользователя [ править ]
Вход пользователя будет производиться по следующему алгоритму:
Форма входа [ править ]
Сессия (session.php) [ править ]
Вывод данных пользователя [ править ]
Для вывода данных пользователя будут использоваться куки, но поскольку они могут содержать только латинские буквы и цифры — они будут использоваться только как идентификатор имени пользователя и подтверждения его авторизации.
Пользователю нужно выводить максимум информации о его ошибках. Если Ваш проект будет очень большим и пользователь при входе будет вводить не только логин и пароль, а ещё 20 полей — то пользователю будет не очень удобно, при опечатке, смотреть на такое сообщение:
Возможно, Вы ошиблись при заполнении данных. Попробуйте ещё раз.
Ему будет гораздо приятнее, если ему выведут сообщение с возможным полем опечатки и самой опечаткой. Но в нашем варианте, будет рассматриваться только вариант с логином и паролем.
Естественно, невозможно использовать один и тот же текст для вывода разной информации. Всего их три:
Проще всего будет просто выводить шаблон на страницу ($login_form).
Что такое PHP и почему его все ненавидят
Несмотря на то, что 83% сайтов в интернете работают на PHP.
История языка
Изначально PHP расшифровывался как Personal Home Page Tools — инструменты для создания персональных страниц. Дело в том, что раньше, чтобы сделать функциональный сайт, чаще всего использовали C, Perl и CGI-скрипты. Звучит сложно, на деле — тоже сложно. Единственным способом сделать что-то своё и не изучать при этом три тома по программированию был PHP.
Например, можно сделать так:
Привет! А вы знаете, что
В результате на странице получится строчка: «Привет! А вы знаете, что этот код написан на PHP?»
Ещё можно создавать целые PHP-файлы и писать весь код там, а потом просто подключать эти файлы в нужный момент. Получается, что с PHP можно работать в двух режимах: писать код прямо в коде страницы или выносить всё в отдельные файлы.
PHP — это просто
Именно простота этого языка принесла ему дурную славу: слишком много появилось плохого кода, который на первый взгляд работал хорошо. Посмотрите сами: начать писать на PHP действительно просто.
Комментарии и точка с запятой. Комментарии можно ставить в любом месте — достаточно написать два слеша подряд. А точка с запятой ставится после каждой команды — точно так же, как в С, Pascal, JavaScript и ещё в сотнях других языков.
Объявление переменных. Чтобы объявить переменную, нужно просто поставить знак доллара, после него написать название переменной и присвоить ей какое-то значение.
Вывод на экран. В HTML-коде достаточно вставить команду echo, которая помещает текст в то место, откуда вызвали команду. Например, этот код покажет заголовок первого уровня с текстом «Заголовок, собранный на PHP»:
И этот код сделает то же самое:
Ещё в PHP есть классы и объекты, автоматическое приведение типов (хотя мало кто понимает, как оно там работает в сложных примерах) и множество встроенных функций, которые упрощают разработку и помогают быстро писать код. А самое главное — PHP сам заставляет работать любой код, если он хоть как-то написан по правилам языка. Даже если внутри будет полная чушь, но похожая на PHP-код — интерпретатор его старательно выполнит, и, скорее всего, многое из этого будет даже работать.
Для чего нужен PHP
Собирать страницы из модулей. Если помните, PHP-код можно встраивать в HTML-страницы, а можно сохранять как отдельные файлы. В этом случае мы получаем мини-модули, каждый из которых отвечает за что-то одно. Например, в одном мы пишем, как будет выглядеть шапка сайта, в другом — меню, третий файл будет отвечать за подвал, четвёртый — за блок с отзывами о товарах.
Если у нас интернет-магазин и на каждой странице товара нужно показать шапку сайта и подвал, можно каждый раз прописывать это вручную, а можно собрать на PHP. Для этого достаточно в теле страницы написать что-то такое:
PHP возьмёт файл header.php, в котором мы написали, как должна выглядеть шапка сайта, и поставит её в начало страницы. То же самое сделает и с подвалом — файлом footer.php, и так будет на каждой странице товара. Получается, что нам не нужно писать один и тот же код шапки и подвала на каждой странице, достаточно сделать это в одном месте, а потом подключать одной строчкой.
Создавать CMS и движки для сайтов. Такие модульные возможности PHP привели к тому, что большинство современных систем управления контентом на сайтах написаны на PHP. Смотрите сами:
Если вы на бесплатном хостинге используете какой-то инструмент для создания или поддержки сайта, скорее всего, он тоже будет написан на PHP.
Работать с формами и данными на странице. HTML плохо умеет работать с формами и отправлять куда-то данные, которые вы вводите в поля регистрации. PHP справляется с этим гораздо лучше: вы говорите, из какого поля что нужно взять и по какому адресу отправить, а всё остальное интерпретатор делает за вас.
Запоминать пользователей и делать формы авторизации. Если вам нужно быстро написать свою форму регистрации на сайте или запоминать посетителей даже без регистрации, то PHP — самый простой вариант решения этой задачи. Единственное, что нужно знать — как работать с базами данных, где хранятся записи о пользователях, потому что PHP это тоже умеет.
Почему все ненавидят PHP
По старой памяти, когда ужасного кода было много. Простота вхождения в этот язык привела к тому, что невозможно было нормально поддерживать сайт, написанный кем-то на PHP. Этот язык позволял раньше (сейчас меньше, но тоже есть) много вольностей с типами данных, переменными, обращениями к базе данных, поэтому разобраться было почти нереально.
Кроме этого, раньше в PHP было много уязвимостей, через которые можно залезть в базы данных пользователей или что-то поломать на сайте. В новых версиях большинство дыр уже устранили, но тогда это стало реальной проблемой.
Смешанный код. Писать в одном файле на PHP и HTML можно, если у вас всего одна форма обратной связи. Но когда весь сложный код на PHP расползается по всей странице, то это сильно мешает разобраться, что же там происходит на самом деле.
Любые переменные в любом месте. Понадобилась новая переменная? Объявите её на любом участке кода и сразу берите в работу. Это удобно для первоначальной разработки, когда ты просто берёшь новую переменную там, где она понадобилась, и делаешь с ней что хочешь. Но когда проходит время или кто-то другой хочет разобраться в коде, то такой подход сильно затрудняет работу.
Например, можно написать так:
Когда новый программист захочет понять, за что отвечают переменные а и b, он найдёт место, где они объявляются, и посмотрит, какого они типа и для чего использовались вначале. Но разработчик мог в процессе передумать и начать использовать эти переменные для других целей с новыми типами данных. Чтобы это понять, нужно просмотреть весь код и разобраться в логике, а это долго и трудно.
Стоит ли учить PHP?
Зависит от задачи. Дело в том, что не менее 80% сайтов уже сейчас работают на PHP: это значит, что их нужно будет еще какое-то время поддерживать. Ещё лет 5–10 спрос на PHP точно будет.
Однозначно стоит учить PHP, если хотите работать с Вордпрессом, Друпалом, Джумлой и другими известными системами управления сайтами. Они написаны на PHP, и все надстройки и дополнения — тоже. Хороший разработчик WordPress сейчас на вес золота.
Будут ли веб-разработчики массово переходить на другие технологии — вопрос открытый. Сейчас, если вы покупаете виртуальный хостинг, вам сразу включают интерпретатор PHP, потому что все его используют. А другие технологии типа Python или Node.js — не включают, их нужно устанавливать отдельно.
Но ведь и веб — это не навсегда. Ещё лет 20, и понятие веб-сайта может безнадёжно устареть, потому что люди будут в приложениях, соцсетях или ещё где похуже.
Наверное, ответ на вопрос такой: если вам до 20 лет, то уже не надо учить PHP. А если ближе к 40–50 и вы хотите заниматься вебом — то определённо да.
Что дальше
В следующей серии попрактикуемся в PHP — напишем свой код для пользы дела или для развлечений.