PHP учебник
Начало работы с PHP
Поиск…
замечания
PHP (рекурсивный аббревиатура для PHP: Hypertext Preprocessor) - широко используемый язык программирования с открытым исходным кодом. Он особенно подходит для веб-разработки. Уникальная вещь в PHP заключается в том, что она служит как начинающим, так и опытным разработчикам. Он имеет низкий барьер для входа, поэтому его легко начать, и в то же время он предоставляет расширенные функции, предлагаемые на других языках программирования.
Открытый исходный код
Это проект с открытым исходным кодом. Не стесняйтесь участвовать .
Спецификация языка
PHP имеет спецификацию языка .
Поддерживаемые версии
В настоящее время существует три поддерживаемые версии : 5.6, 7.0 и 7.1.
Каждая ветвь релиза PHP полностью поддерживается в течение двух лет с момента ее первоначального стабильного выпуска. После этого двухлетнего периода активной поддержки каждый филиал затем поддерживается еще на один год для критических проблем безопасности. Релизы в течение этого периода производятся по мере необходимости: в зависимости от количества отчетов могут быть выпуски с несколькими точками или без них.
Неподдерживаемые версии
Как только три года поддержки будут завершены, филиал достигнет своего конца жизни и больше не будет поддерживаться.
Доступна таблица отделений конца жизни .
Отслеживание проблем
Ошибки и другие проблемы отслеживаются на странице https://bugs.php.net/ .
Списки рассылки
Обсуждения о разработке и использовании PHP хранятся в списках рассылки PHP .
Официальная документация
Пожалуйста, помогите сохранить или перевести официальную документацию PHP .
Вы можете использовать редактор на edit.php.net . Ознакомьтесь с нашим руководством для авторов .
Версии
PHP 7.x
Версия | Поддерживается до | Дата выхода |
---|---|---|
7,1 | 2019-12-01 | 2016-12-01 |
7,0 | 2018-12-03 | 2015-12-03 |
PHP 5.x
Версия | Поддерживается до | Дата выхода |
---|---|---|
5,6 | 2018-12-31 | 2014-08-28 |
5,5 | 2016-07-21 | 2013-06-20 |
5,4 | 2015-09-03 | 2012-03-01 |
5,3 | 2014-08-14 | 2009-06-30 |
5,2 | 2011-01-06 | 2006-11-02 |
5,1 | 2006-08-24 | 2005-11-24 |
5.0 | 2005-09-05 | 2004-07-13 |
PHP 4.x
Версия | Поддерживается до | Дата выхода |
---|---|---|
4,4 | 2008-08-07 | 2005-07-11 |
4,3 | 2005-03-31 | 2002-12-27 |
4,2 | 2002-09-06 | 2002-04-22 |
4,1 | 2002-03-12 | 2001-12-10 |
4,0 | 2001-06-23 | 2000-05-22 |
Устаревшие версии
Версия | Поддерживается до | Дата выхода |
---|---|---|
3.0 | 2000-10-20 | 1998-06-06 |
2,0 | 1997-11-01 | |
1,0 | 1995-06-08 |
Вывод HTML с веб-сервера
PHP можно использовать для добавления контента в файлы HTML. Хотя HTML обрабатывается непосредственно веб-браузером, скрипты PHP выполняются веб-сервером, и полученный HTML-код отправляется в браузер.
Следующая HTML-разметка содержит инструкцию PHP, которая добавит Hello World!
к выходу:
<!DOCTYPE html>
<html>
<head>
<title>PHP!</title>
</head>
<body>
<p><?php echo "Hello world!"; ?></p>
</body>
</html>
Когда это сохраняется как скрипт PHP и выполняется веб-сервером, в браузер пользователя будет отправлен следующий HTML-код:
<!DOCTYPE html>
<html>
<head>
<title>PHP!</title>
</head>
<body>
<p>Hello world!</p>
</body>
</html>
echo
также есть синтаксис ярлыков, который позволяет сразу распечатать значение. До PHP 5.4.0 этот короткий синтаксис работает только с включенным параметром конфигурации short_open_tag .
Например, рассмотрим следующий код:
<p><?= "Hello world!" ?></p>
Его выход идентичен выходу следующего:
<p><?php echo "Hello world!"; ?></p>
В реальных приложениях все данные, выводимые PHP на HTML-страницу, должны быть надлежащим образом экранированы, чтобы предотвратить атаки XSS ( межсайтовый скриптинг ) или повреждение текста.
См. Также: Строки и PSR-1 , в которых описаны лучшие практики, включая правильное использование коротких тегов ( <?= ... ?>
).
Не-HTML-вывод с веб-сервера
В некоторых случаях при работе с веб-сервером может потребоваться переопределение типа содержимого веб-сервера по умолчанию. Могут быть случаи, когда вам необходимо отправить данные в виде plain text
, JSON
или XML
, например.
Функция header()
может отправлять необработанный HTTP-заголовок. Вы можете добавить заголовок Content-Type
чтобы уведомить обозреватель содержимого, которое мы отправляем.
Рассмотрим следующий код, где мы устанавливаем Content-Type
как text/plain
:
header("Content-Type: text/plain");
echo "Hello World";
Это приведет к созданию простого текстового документа со следующим содержимым:
Привет, мир
Чтобы создать контент JSON , используйте вместо него тип содержимого application/json
:
header("Content-Type: application/json");
// Create a PHP data array.
$data = ["response" => "Hello World"];
// json_encode will convert it to a valid JSON string.
echo json_encode($data);
Это создаст документ типа application/json
со следующим содержимым:
{"response": "Hello World"}
Обратите внимание, что функция header()
должна вызываться до того, как PHP произведет какой-либо вывод, или веб-сервер уже отправит заголовки для ответа. Итак, рассмотрим следующий код:
// Error: We cannot send any output before the headers
echo "Hello";
// All headers must be sent before ANY PHP output
header("Content-Type: text/plain");
echo "World";
Это приведет к предупреждению:
Предупреждение. Невозможно изменить информацию заголовка - заголовки, уже отправленные (вывод запущен в /dir/example.php-2) в /dir/example.php в строке 3
При использовании header()
его вывод должен быть первым байтом, который отправляется с сервера. По этой причине важно не иметь пустых строк или пробелов в начале файла до открытия PHP тега <?php
. По той же причине считается лучшей практикой (см. PSR-2 ) опустить закрывающий тег PHP ?>
Из файлов, содержащих только PHP и из блоков кода PHP в самом конце файла.
Просмотрите раздел буферизации вывода, чтобы узнать, как «уловить» ваш контент в переменную для вывода позже, например, после вывода заголовков.
Привет, мир!
Наиболее широко используемая языковая конструкция для вывода на печать в PHP - echo
:
echo "Hello, World!\n";
Кроме того, вы также можете использовать print
:
print "Hello, World!\n";
Оба оператора выполняют одну и ту же функцию с незначительными отличиями:
-
echo
имеет возвратvoid
, тогда какprint
возвращаетint
со значением1
-
echo
может принимать несколько аргументов (без круглых скобок), тогда какprint
принимает только один аргумент -
echo
немного быстрее, чемprint
И echo
и print
- это языковые конструкции, а не функции. Это означает, что они не требуют скобок вокруг своих аргументов. Для косметической согласованности с функциями могут быть включены круглые скобки. Обширные примеры использования echo
и print
доступны в других местах .
C-style printf
и связанные с ним функции также доступны, как в следующем примере:
printf("%s\n", "Hello, World!");
См. Вывод значения переменной для всестороннего введения вывода переменных в PHP.
Разделение инструкций
Как и большинство других языков языка C, каждый оператор заканчивается точкой с запятой. Кроме того, закрывающий тег используется для завершения последней строки кода блока PHP.
Если последняя строка кода PHP заканчивается точкой с запятой, закрывающий тег является необязательным, если код, следующий за последней строкой кода, не является обязательным. Например, мы можем оставить закрывающий тег после echo "No error";
в следующем примере:
<?php echo "No error"; // no closing tag is needed as long as there is no code below
Однако, если есть какой-либо другой код, следующий за вашим блоком кода PHP, закрывающий тег больше не является необязательным:
<?php echo "This will cause an error if you leave out the closing tag"; ?>
<html>
<body>
</body>
</html>
Мы также можем оставить точку с запятой последнего оператора в блоке кода PHP, если этот блок кода имеет закрывающий тег:
<?php echo "I hope this helps! :D";
echo "No error" ?>
Обычно рекомендуется всегда использовать точку с запятой и использовать закрывающий тег для каждого блока кода PHP, за исключением последнего блока кода PHP, если больше не следует кода этого блока кода PHP.
Итак, ваш код должен выглядеть следующим образом:
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon and a closing tag because more code follows";
?>
<p>Some HTML code goes here</p>
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon and a closing tag because more code follows";
?>
<p>Some HTML code goes here</p>
<?php
echo "Here we use a semicolon!";
echo "Here as well!";
echo "Here as well!";
echo "Here we use a semicolon but leave out the closing tag";
PHP CLI
PHP также можно запускать из командной строки напрямую с помощью интерфейса командной строки (CLI).
CLI в основном такой же, как PHP с веб-серверов, за исключением некоторых различий в терминах стандартного ввода и вывода.
Инициирование
PHP CLI позволяет четыре способа запуска PHP-кода:
- Стандартный вход. Запустите команду
php
без каких-либо аргументов, но в нее введем PHP-код:echo '<?php echo "Hello world!";' | php
- Имя файла в качестве аргумента. Запустите команду
php
с именем исходного файла PHP в качестве первого аргумента:php hello_world.php
- Код в качестве аргумента. Используйте параметр
-r
в командеphp
, а затем код для запуска. Теги<?php
open не требуются, поскольку все аргументы рассматриваются как PHP-код:php -r 'echo "Hello world!";'
- Интерактивная оболочка. Используйте параметр
-a
в командеphp
для запуска интерактивной оболочки. Затем введите (или вставьте) код PHP и нажмите return :$ php -a Interactive mode enabled php > echo "Hello world!"; Hello world!
Выход
Все функции или элементы управления, которые производят вывод HTML в веб-сервере PHP, могут использоваться для создания вывода в потоке stdout (дескриптор файла 1), и все действия, которые выдают вывод в журналах ошибок на веб-сервере PHP, будут выводить результат в потоке stderr (файл дескриптор 2).
Example.php
<?php
echo "Stdout 1\n";
trigger_error("Stderr 2\n");
print_r("Stdout 3\n");
fwrite(STDERR, "Stderr 4\n");
throw new RuntimeException("Stderr 5\n");
?>
Stdout 6
Командная строка оболочки $ php Example.php 2>stderr.log >stdout.log;\
> echo STDOUT; cat stdout.log; echo;\
> echo STDERR; cat stderr.log\
STDOUT
Stdout 1
Stdout 3
STDERR
Stderr 4
PHP Notice: Stderr 2
in /Example.php on line 3
PHP Fatal error: Uncaught RuntimeException: Stderr 5
in /Example.php:6
Stack trace:
#0 {main}
thrown in /Example.php on line 6
вход
См .: Интерфейс командной строки (CLI)
Встроенный сервер PHP
PHP 5.4+ поставляется со встроенным сервером разработки. Его можно использовать для запуска приложений без необходимости установки производственного HTTP-сервера, такого как nginx или Apache. Встроенный сервер предназначен только для использования в целях разработки и тестирования.
Его можно запустить с помощью флага -S
:
php -S <host/ip>:<port>
Пример использования
- Создайте файл
index.php
содержащий:
<?php
echo "Hello World from built-in PHP server";
Запустите команду
php -S localhost:8080
из командной строки. Не включайтеhttp://
. Это запустит веб-сервер, прослушивающий порт 8080, используя текущий каталог, в котором вы находитесь в качестве корня документа.Откройте браузер и перейдите по
http://localhost:8080
. Вы должны увидеть страницу «Hello World».
конфигурация
Чтобы переопределить корень документа по умолчанию (то есть текущий каталог), используйте флаг -t
:
php -S <host/ip>:<port> -t <directory>
Например, если у вас есть public/
каталог в вашем проекте, вы можете обслуживать свой проект из этого каталога, используя php -S localhost:8080 -t public/
.
бревна
Каждый раз, когда запрос создается с сервера разработки, в командной строке записывается запись журнала, подобная приведенной ниже.
[Mon Aug 15 18:20:19 2016] ::1:52455 [200]: /
Теги PHP
Существует три типа тегов для обозначения блоков PHP в файле. Парсер PHP ищет открывающие и (если есть) закрывающие теги для разграничения кода для интерпретации.
Стандартные теги
Эти теги являются стандартным методом для встраивания кода PHP в файл.
<?php
echo "Hello World";
?>
Эхо-теги
Эти теги доступны во всех версиях PHP, и поскольку PHP 5.4 всегда включен. В предыдущих версиях эхо-теги можно было включить только в сочетании с короткими тегами.
<?= "Hello World" ?>
Короткие метки
Вы можете отключить или включить эти теги с помощью опции short_open_tag
.
<?
echo "Hello World";
?>
Короткие теги:
- запрещены во всех основных стандартах кодирования PHP
- не приветствуются в официальной документации
- по умолчанию отключены в большинстве дистрибутивов
- вмешиваться в инструкции обработки встроенного XML
- не принимаются в представлении кода большинством проектов с открытым исходным кодом
Теги ASP
asp_tags
опцию asp_tags
, можно использовать теги ASP-стиля.
<%
echo "Hello World";
%>
Это историческая причуда и никогда не должна использоваться. Они были удалены в PHP 7.0.