Начало работы с PHP

Download php eBook

замечания

введите описание изображения здесь

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-код:

<p><?= "Hello world!" ?></p>
 
PHP 5.x 5.4

echo также есть синтаксис ярлыков, который позволяет сразу распечатать значение. До PHP 5.4.0 этот короткий синтаксис работает только с включенным параметром конфигурации short_open_tag .

Например, рассмотрим следующий код:

<p><?php echo "Hello world!"; ?></p>
 

Его выход идентичен выходу следующего:

<!DOCTYPE html>
<html>
    <head>
        <title>PHP!</title>
    </head>
    <body>
        <p>Hello world!</p>
    </body>
</html>
 

В реальных приложениях все данные, выводимые PHP на HTML-страницу, должны быть надлежащим образом экранированы, чтобы предотвратить атаки XSS ( межсайтовый скриптинг ) или повреждение текста.

См. Также: Строки и PSR-1 , в которых описаны лучшие практики, включая правильное использование коротких тегов ( <?= ... ?> ).

Привет, мир!

Наиболее широко используемая языковая конструкция для вывода на печать в PHP - echo :

echo "Hello, World!\n";
 

Кроме того, вы также можете использовать print :

printf("%s\n", "Hello, World!");
 

Оба оператора выполняют одну и ту же функцию с незначительными отличиями:

  • echo имеет возврат void , тогда как print возвращает int со значением 1
  • echo может принимать несколько аргументов (без круглых скобок), тогда как print принимает только один аргумент
  • echo немного быстрее, чем print

И echo и print - это языковые конструкции, а не функции. Это означает, что они не требуют скобок вокруг своих аргументов. Для косметической согласованности с функциями могут быть включены круглые скобки. Обширные примеры использования echo и print доступны в других местах .

C-style printf и связанные с ним функции также доступны, как в следующем примере:

print "Hello, World!\n";
 

См. Вывод значения переменной для всестороннего введения вывода переменных в 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 "I hope this helps! :D";
echo "No error" ?>      
 

Мы также можем оставить точку с запятой последнего оператора в блоке кода 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, за исключением последнего блока кода PHP, если больше не следует кода этого блока кода PHP.

Итак, ваш код должен выглядеть следующим образом:

<?php echo "This will cause an error if you leave out the closing tag"; ?>
<html>
    <body>
    </body>
</html>
 

Не-HTML-вывод с веб-сервера

В некоторых случаях при работе с веб-сервером может потребоваться переопределение типа содержимого веб-сервера по умолчанию. Могут быть случаи, когда вам необходимо отправить данные в виде plain text , JSON или XML , например.

Функция header() может отправлять необработанный HTTP-заголовок. Вы можете добавить заголовок Content-Type чтобы уведомить обозреватель содержимого, которое мы отправляем.

Рассмотрим следующий код, где мы устанавливаем Content-Type как text/plain :

header("Content-Type: text/plain");
echo "Hello World";
 

Это приведет к созданию простого текстового документа со следующим содержимым:

Привет, мир

Чтобы создать контент JSON , используйте вместо него тип содержимого application/json :

// 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";
 

Это создаст документ типа application/json со следующим содержимым:

{"response": "Hello World"}

Обратите внимание, что функция header() должна вызываться до того, как PHP произведет какой-либо вывод, или веб-сервер уже отправит заголовки для ответа. Итак, рассмотрим следующий код:

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);
 

Это приведет к предупреждению:

Предупреждение. Невозможно изменить информацию заголовка - заголовки, уже отправленные (вывод запущен в /dir/example.php-2) в /dir/example.php в строке 3

При использовании header() его вывод должен быть первым байтом, который отправляется с сервера. По этой причине важно не иметь пустых строк или пробелов в начале файла до открытия PHP тега <?php . По той же причине считается лучшей практикой (см. PSR-2 ) опустить закрывающий тег PHP ?> Из файлов, содержащих только PHP и из блоков кода PHP в самом конце файла.

Просмотрите раздел буферизации вывода, чтобы узнать, как «уловить» ваш контент в переменную для вывода позже, например, после вывода заголовков.

Встроенный сервер PHP

PHP 5.4+ поставляется со встроенным сервером разработки. Его можно использовать для запуска приложений без необходимости установки производственного HTTP-сервера, такого как nginx или Apache. Встроенный сервер предназначен только для использования в целях разработки и тестирования.

Его можно запустить с помощью флага -S :

php -S <host/ip>:<port>
 

Пример использования

  1. Создайте файл index.php содержащий:
php -S <host/ip>:<port> -t <directory>
 
  1. Запустите команду php -S localhost:8080 из командной строки. Не включайте http:// . Это запустит веб-сервер, прослушивающий порт 8080, используя текущий каталог, в котором вы находитесь в качестве корня документа.

  2. Откройте браузер и перейдите по http://localhost:8080 . Вы должны увидеть страницу «Hello World».

конфигурация

Чтобы переопределить корень документа по умолчанию (то есть текущий каталог), используйте флаг -t :

[Mon Aug 15 18:20:19 2016] ::1:52455 [200]: /
 

Например, если у вас есть public/ каталог в вашем проекте, вы можете обслуживать свой проект из этого каталога, используя php -S localhost:8080 -t public/ .

бревна

Каждый раз, когда запрос создается с сервера разработки, в командной строке записывается запись журнала, подобная приведенной ниже.

<?php
echo "Hello World from built-in PHP server";
 

PHP CLI

PHP также можно запускать из командной строки напрямую с помощью интерфейса командной строки (CLI).

CLI в основном такой же, как PHP с веб-серверов, за исключением некоторых различий в терминах стандартного ввода и вывода.

Инициирование

PHP CLI позволяет четыре способа запуска PHP-кода:

  1. Стандартный вход. Запустите команду php без каких-либо аргументов, но в нее введем PHP-код:
    echo '<?php echo "Hello world!";' | php
  2. Имя файла в качестве аргумента. Запустите команду php с именем исходного файла PHP в качестве первого аргумента:
    php -r 'echo "Hello world!";'
  3. Код в качестве аргумента. Используйте параметр -r в команде php , а затем код для запуска. Теги <?php open не требуются, поскольку все аргументы рассматриваются как PHP-код:
    $ php -a
    Interactive mode enabled
    php > echo "Hello world!";
    Hello world!
  4. Интерактивная оболочка. Используйте параметр -a в команде php для запуска интерактивной оболочки. Затем введите (или вставьте) код PHP и нажмите return :
    <?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
     

Выход

Все функции или элементы управления, которые производят вывод HTML в веб-сервере PHP, могут использоваться для создания вывода в потоке stdout (дескриптор файла 1), и все действия, которые выдают вывод в журналах ошибок на веб-сервере PHP, будут выводить результат в потоке stderr (файл дескриптор 2).

Example.php
$ 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
 
Командная строка оболочки
php hello_world.php

вход

См .: Интерфейс командной строки (CLI)

Теги PHP

Существует три типа тегов для обозначения блоков PHP в файле. Парсер PHP ищет открывающие и (если есть) закрывающие теги для разграничения кода для интерпретации.

Стандартные теги

Эти теги являются стандартным методом для встраивания кода PHP в файл.

<?php
    echo "Hello World";
?>
 
PHP 5.x 5.4

Эхо-теги

Эти теги доступны во всех версиях PHP, и поскольку PHP 5.4 всегда включен. В предыдущих версиях эхо-теги можно было включить только в сочетании с короткими тегами.

<?
    echo "Hello World";
?>
 

Короткие метки

Вы можете отключить или включить эти теги с помощью опции short_open_tag .

<%
    echo "Hello World";
%>
 

Короткие теги:

  • запрещены во всех основных стандартах кодирования PHP
  • не приветствуются в официальной документации
  • по умолчанию отключены в большинстве дистрибутивов
  • вмешиваться в инструкции обработки встроенного XML
  • не принимаются в представлении кода большинством проектов с открытым исходным кодом
PHP 5.x 5.6

Теги ASP

asp_tags опцию asp_tags , можно использовать теги ASP-стиля.

<?= "Hello World" ?>
 

Это историческая причуда и никогда не должна использоваться. Они были удалены в PHP 7.0.

Stats

8517 Contributors: 70
Wednesday, August 2, 2017
Лицензировано согласно: CC-BY-SA

Не связан с Stack Overflow
Rip Tutorial: info@zzzprojects.com

Скачать книгу