Экстракт PHP

PHP – Hypertext Preprocessor (первоначально PHP/FI – Personal Home Page / Form Interpreter), а позже названный Personal Home Page Tools. Это скриптовый язык общего назначения, использует большое число синтаксических заимствований из C, интенсивно применяется для разработки серверной части веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков, применяющихся для создания динамических веб-сайтов.

  • PHP Tutorial //www.w3schools.com
  • Xdebug is an extension for PHP, and provides a range of features to improve the PHP development experience //xdebug.org
  • 23 лучших редактора и IDE для PHP //freelance.today
  • Программирование PHP в Ubuntu: Как пользоваться Atom – Losst //losst.ru

Основы

Скрипты PHP внедряются в HTML страницы для обработки web-сервером перед отправкой по запросу браузера. Скрипт PHP может осуществить динамическую модификацию html-кода, но в результате обработки web-сервером текст самого скрипта из страницы удаляется и заменяется результатом его выполнения. Поскольку скрипты PHP до браузера не доходят, они могут содержать выражения и алгоритмы составляющие тайну.

Вставки PHP в страницу выполняются внутри ограничителей  <?php ?> . Допускается (но признано устаревшим и практически не используется) использование сокращённого варианта <? ?>. Кроме того, до версии 7.0 допускалось использование ограничителей языка программирования ASP <% %> и <script language=”php”> </script>. Работа сокращённых конструкций определяется в конфигурационном файле php.ini.

Синтаксис

Отдельные выражения PHP завершаются  ; , но в некоторых случаях допускаются исключения.

Ключевые слова (например, if, else, while, echo и т. д.), классы, функции и пользовательские функции не чувствительны к регистру.

PHP поддерживает три типа комментариев: в стиле языка Си (ограниченные /* */), C++ (начинающиеся с // и идущие до конца строки) и оболочки UNIX (с # до конца строки).

Переменные

Имена переменных чувствительны к регистру и состоят букв, цифр и подчеркивания. В начале имени переменной используется знак $, хотя часто утверждается, что $ является частью имени переменной, поиск переменной в глобальном массиве выполняется без $, поэтому вероятнее всего, знак $ символизирует использование в выражении значения переменной.

В PHP есть три разных области видимости переменных:

  • local действуют в пределах области определения функций
  • global действуют в области всего скрипта
  • static сохраняет значение за пределами определения в области функции, но доступна только в области функции.

Все глобальные переменные PHP доступны в массиве через индекс имени переменной: global $day=”sunday”; echo($GLOBALS[‘day’]); $GLOBALS[‘day’]=”monday”;

Типы

Скалярные типы значений:

  • int целочисленный
    • !!! зависит от системы
      • знаковое 32 бит в диапазоне -2_147_483_648..2_147_483_647.
      • in 64 bit systems. -9223372036854775808..9223372036854775807
      • PHP_INT_MAX – The largest integer supported
        PHP_INT_MIN – The smallest integer supported
        PHP_INT_SIZE – The size of an integer in bytes
    • для целочисленных констант и представлений доступны нотации
      • 1234; // десятичное число
      • 0123; // восьмеричное число (эквивалентно 83 в десятичной системе)
      • 0o123; // восьмеричное число (начиная с PHP 8.1.0)
      • 0x1A; // шестнадцатеричное число (эквивалентно 26 в десятичной системе)
      • 0b11111111; // двоичное число (эквивалентно 255 в десятичной системе)
      • 1_234_567; // десятичное число (с PHP 7.4.0)
  • float число с плавающей точкой
  • bool логический:
    • значения {true, false}
  • string строковый
    • строковый константы в нотации с одинарными и двойными кавычками равноценны: “abc” == ‘abc’

Нескалярные типы значений:

  • null – это особый тип данных с единственным значением NULL, которое принимают неинициализированные переменные, инициализированные константой null, удалённые с помощью unset()
  • array массив PHP является ассоциативной коллекцией
    • array(“Volvo”,”BMW”,”Toyota”);
  • object – тип экземпляра класса
    • объект создается $week = new Week();
    • публичные свойства и методы объекта доступны: echo($week -> today);
  • resource внешний ресурс, который не является типом данных PHP, но позволяет получить к нему доступ

Константа

define(“GREETING”, “Welcome to W3Schools.com!”);
echo GREETING;

Индексированный массив

Ассоциативный массив

Многомерный массив

 

Предопределённые переменные

Суперглобальные переменные

  • $GLOBALS
  • $_​SERVER
  • $_​GET переменные HTTP GET, ассоциативный массив переменных, переданных скрипту через параметры URL (известные также как строка запроса), массив заполняется не только для GET-запросов, а скорее для всех запросов со строкой запроса.
  • $_​POST
  • $_​FILES
  • $_​REQUEST
  • $_​SESSION
  • $_​ENV
  • $_​COOKIE
  • $http_​response_​header
  • $argc содержит число аргументов, переданных скрипту
  • $argv содержит массив (array) всех аргументов, переданных скрипту при запуске из командной строки.
    • первый аргумент $argv[0] всегда содержит имя файла запущенного скрипта
    • доступен как $_SERVER[‘argv’].

Вывод результата

Как правило, результатом выполнения скрипта PHP является некоторый текст, который web-сервер размещает на странице на том месте, где находился скрипт. Результирующий  текст формируется последовательным использованием оператора echo или выражения print.

  • echo является оператором вывода: echo(“Today is ” . $day);
    • echo допускает последовательный вывод нескольких выражений при использовании без скобок: echo “Today”, ” is “, $day;
  • print является выражением, имеющим значение 1 : $printed = print(“Today is “) + print($day);
  • echo и print используют параметр в качестве шаблона и подменяют находящиеся в нем имена переменных значениями: echo(“Today is $day”);
  • использование скобок для echo и print необязательно: print “Today is $day”;
  • для вывода символа $ необходимо использовать формат спецсимвола print(“The value is in the variable \$day”);

 

Синтаксис

Имена переменных начинаются с символа $, тип переменной объявлять не нужно. Имена переменных и констант чувствительны к регистру символов. Имена классов, методов классов и функций к регистру символов не чувствительны. Переменные обрабатываются в строках, заключённых в двойные кавычки, и heredoc-строках (строках, созданных при помощи оператора <<<). Переменные в строках, заключённых в одинарные кавычки и nowdoc не обрабатываются.

Инструкции разделяются с помощью точки с запятой (;), за исключением некоторых случаев, после объявления конструкции if/else и циклов.

Переменные в функцию можно передавать как по значению, так и по ссылке (используется знак &).

Суперглобальные массивы /Superglobal arrays

Функции

//

Стрелочные функции

Также называемые короткими замыканиями (short closures), станут хорошим способом писать чистый код в PHP. Такая форма записи будет полезной при передаче замыканий в такие функции как array_map или array_filter.

  • появились в PHP 7.4
  • Начинаются с ключевого слова fn
  • Могут иметь только одно выражение, также являющееся возвращаемым значением
  • Не поддерживается return
  • Type-hintihg поддерживается в аргументах и возвращаемых значениях

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

/

В PHP echo и print хоть и выглядят похоже на функции, однако первое является оператором, а второе выражением (то есть print возвращает значение, в отличие от echo). Для echo и print использование скобок необязательно.

Встроенные функции

//

Функции для работы с переменными

//

  • var_dump($x); выводит информацию о переменной
  • isset() — Определяет, была ли установлена переменная параметра (или всех параметров) значением, отличным от null

is_int()
is_integer() – alias of is_int()
is_long() – alias of is_int()

is_float()
is_double() – alias of is_float()
is_finite()
is_infinite()

is_nan()

PHP

  • phpversion(?string $extension = null): string|false
  • require ‘filename’;
  • include ‘filename’;

Потоки PHP

Доступ к потокам ввода-вывода реализуется файловыми функциями через URL со схемой “php”

  • php://input является потоком только для чтения, который позволяет вам читать необработанные данные из тела запроса, недоступен с типом содержимого enctype=”multipart/form-data”
  • php://output является потоком только для записи, который позволяет записывать данные в выходной буфер также, как функция print или оператор echo 
  • php://fd предоставляет прямой доступ к указанному файловому дескриптору. Например, php://fd/3 относится к файловому дескриптору 3. 
  • php://memory и php://temp
  • php://stdin, php://stdout и php://stderr + php://filter

Функции обработки ошибок

  • error_log (string $message, int $message_type = 0, ?string $destination = null, ?string $additional_headers = null): bool
    — отправляет сообщение об ошибке заданному обработчику ошибок
  • error_clear_last(): void — Очистить последнюю ошибку

вывод в поток

  • header(string $header, bool $replace = true, int $response_code = 0): void – вывод HTTP-заголовка, используется первой в выводе до каких-либо HTML-тегов и даже пустых строк

Функции файловой системы

//

  • finfo_file (finfo $finfo, string $filename, int $flags = FILEINFO_NONE, ?resource $context = null): string|false
    • public finfo::file(string $filename, int $flags = FILEINFO_NONE, ?resource $context = null): string|false
  • file_get_contents(string $filename, bool $use_include_path = false, ?resource $context = null, int $offset = 0, ?int $length = null): string|false – возвращает в строке содержимое файла или фрагмент, начиная со смещения offset и длиной length байт
  • file_put_contents() пишет данные в файл, идентична последовательным успешным вызовам функций fopen(); fwrite(); fclose();

cURL

  • http_build_query(array|object $data, string $numeric_prefix = “”, ?string $arg_separator = null, int $encoding_type = PHP_QUERY_RFC1738): string – возвращает URL-кодированную строку запроса из массива
  • curl_exec(CurlHandle $handle): string|bool – Выполняет запрос cURL

&

  • base64_encode(string $string): string — Кодирует данные в формат MIME base64
  • base64_decode(string $string, bool $strict = false): string|false — Декодирует данные из формата MIME base64

Функции GD и функции для работы с изображениями

Встроенная в PHP библиотека GD позволяет создавать и обрабатывать растровые изображения и файлы изображений в форматах GIF, PNG, JPEG, WBMP, и XPM. Полученные изображения PHP может сохранять в файлы или выводить непосредственно в потоки браузера.

  • gd_info(): array
  • imagecreate(int $width, int $height): GdImage|false
  • imagecreatefromgd(string $filename): GdImage|false
  • imagecreatefromgif(string $filename): GdImage|false
  • imagesx(GdImage $image): int – Возвращает ширину изображения
  • imagesy(GdImage $image): int – Возвращает высоту изображения
  • imagescale (GdImage $image, int $width, int $height = -1, int $mode = IMG_BILINEAR_FIXED): GdImage|false
  • imagecrop(GdImage $image, array $rectangle): GdImage|false
  • imagegif(GdImage $image, resource|string|null $file = null): bool
  • imagecolorallocate(GdImage $image, int $red, int $green, int $blue): int|false — Создание цвета для изображения, Возвращает идентификатор цвета
  • imagecolorresolve(GdImage $image, int $red, int $green, int $blue): int — Получает идентификатор цвета по RGB или его ближайший аналог
  • imagettftext(GdImage $image, float $size, float $angle, int $x, int $y, int $color, string $font_filename, string $text, array $options = []): array|false — вывод на изображении текста шрифтом TrueType
  • imagefttext(GdImage $image, float $size, float $angle, int $x, int $y, int $color, string $font_filename, string $text, array $options = []): array|false — вывод на изображении текста шрифтом FreeType 2
  • imageftbbox(float $size, float $angle, string $font_filename, string $string, array $options = []): array|false – рассчитывает и возвращает рамку границ FreeType текста.

Примеры

//

Дополнение

Параметры URL

 

Источники

Leave a Reply