PHP: различия между версиями

Материал из Artem Aleksashkin's Wiki
Перейти к навигации Перейти к поиску
Строка 101: Строка 101:
** true, false
** true, false
= Магические методы =
= Магические методы =
** '''__construct(mixed ...$values = ""): void''' - конструктор, вызывается при new ClassName($param1, $param2, $param3)
* '''__construct(mixed ...$values = ""): void''' - конструктор, вызывается при new ClassName($param1, $param2, $param3)
** '''__destruct()''' - деструктор - вызывается при уничтожении объекта
* '''__destruct()''' - деструктор - вызывается при уничтожении объекта
** '''__call(string $name, array $arguments): mixed''' - вызывается при вызове метода с параметрами
* '''__call(string $name, array $arguments): mixed''' - вызывается при вызове метода с параметрами
** '''__callStatic(string $name, array $arguments): mixed''' - вызывается при вызове статического метода с параметрами
* '''__callStatic(string $name, array $arguments): mixed''' - вызывается при вызове статического метода с параметрами
** '''__get(string $name): mixed''' - будет выполнен при чтении данных из недоступных (защищённых или приватных) или несуществующих свойств.
* '''__get(string $name): mixed''' - будет выполнен при чтении данных из недоступных (защищённых или приватных) или несуществующих свойств.
** '''__set(string $name, mixed $value): void''' - будет выполнен при записи данных в недоступные (защищённые или приватные) или несуществующие свойства.
* '''__set(string $name, mixed $value): void''' - будет выполнен при записи данных в недоступные (защищённые или приватные) или несуществующие свойства.
** '''__isset(string $name): bool''' - будет выполнен при использовании isset() или empty() на недоступных (защищённых или приватных) или несуществующих свойствах.
* '''__isset(string $name): bool''' - будет выполнен при использовании isset() или empty() на недоступных (защищённых или приватных) или несуществующих свойствах.
** '''__unset(string $name): void''' - будет выполнен при вызове unset() на недоступном (защищённом или приватном) или несуществующем свойстве.
* '''__unset(string $name): void''' - будет выполнен при вызове unset() на недоступном (защищённом или приватном) или несуществующем свойстве.
** '''__sleep(): array''' - Если метод определили, он выполняется перед сериализацией. Метод может очистить объект и должен вернуть массив с именами всех переменных этого объекта, которые должны быть сериализованы. Если метод ничего не возвращает, то сериализуется константа null и выдаётся предупреждение E_NOTICE.
* '''__sleep(): array''' - Если метод определили, он выполняется перед сериализацией. Метод может очистить объект и должен вернуть массив с именами всех переменных этого объекта, которые должны быть сериализованы. Если метод ничего не возвращает, то сериализуется константа null и выдаётся предупреждение E_NOTICE.
** '''__wakeup(): void''' - восстановить соединения с базой данных, которые могли потеряться во время сериализации, и выполнить другие задачи повторной инициализации.
* '''__wakeup(): void''' - восстановить соединения с базой данных, которые могли потеряться во время сериализации, и выполнить другие задачи повторной инициализации.
** '''__serialize(): array''' - Если метод определили, функция выполняется перед сериализацией. Метод должен создать и вернуть ассоциативный массив пар ключ и значение, которые представляют сериализованную форму объекта.
* '''__serialize(): array''' - Если метод определили, функция выполняется перед сериализацией. Метод должен создать и вернуть ассоциативный массив пар ключ и значение, которые представляют сериализованную форму объекта.
** '''__unserialize(array $data): void''' - Если метод определили, PHP передаст методу массив, который восстановил и вернул метод __serialize(). Затем, если нужно, метод восстанавливает свойства объекта из этого массива.
* '''__unserialize(array $data): void''' - Если метод определили, PHP передаст методу массив, который восстановил и вернул метод __serialize(). Затем, если нужно, метод восстанавливает свойства объекта из этого массива.
** '''__toString(): string''' - разрешает классу выбирать, как класс будет реагировать, когда с ним обращаются как со строкой.
* '''__toString(): string''' - разрешает классу выбирать, как класс будет реагировать, когда с ним обращаются как со строкой.
** '''__invoke( ...$values): mixed''' - вызывается, когда скрипт пытается выполнить объект как функцию.
* '''__invoke( ...$values): mixed''' - вызывается, когда скрипт пытается выполнить объект как функцию.
** '''__set_state(array $properties): object''' - Этот статический метод вызывается для тех классов, которые экспортируются функцией var_export().
* '''__set_state(array $properties): object''' - Этот статический метод вызывается для тех классов, которые экспортируются функцией var_export().
** '''__clone(): void''' - После завершения клонирования, если метод __clone() определён, то будет вызван метод __clone() вновь созданного объекта для возможного изменения всех необходимых свойств.
* '''__clone(): void''' - После завершения клонирования, если метод __clone() определён, то будет вызван метод __clone() вновь созданного объекта для возможного изменения всех необходимых свойств.
** '''__debugInfo(): array''' - Этот метод вызывается функцией var_dump(), когда необходимо вывести список свойств объекта. Если этот метод не определили, выводится каждое свойство объекта c модификаторами public, protected и private
* '''__debugInfo(): array''' - Этот метод вызывается функцией var_dump(), когда необходимо вывести список свойств объекта. Если этот метод не определили, выводится каждое свойство объекта c модификаторами public, protected и private
 
= Суперглобальные переменные =
= Суперглобальные переменные =
** '''$GLOBALS''' - Ссылается на переменные глобальной области видимости
** '''$GLOBALS''' - Ссылается на переменные глобальной области видимости

Версия от 16:49, 3 ноября 2024

Общие сведения

PHP: Hypertext Preprocessor - интерпретируемый язык программирования, который завоевал популярность благодаря легкой интеграции с HTML позволяя вставлять блоки кода <?php echo $someVar; ?> прямо в html код. Сейчас правда от такого отказались большинство движков и используют шаблоны и всякие паттерны.

Установка

sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php8.1

Переключить версию PHP

sudo update-alternatives --config php
# OR sudo update-alternatives --set php /usr/bin/php5.6

История

5.3

5.4

5.5

5.6

7.0

7.1

7.2

7.3

7.4

  • https://www.php.net/manual/ru/migration74.php
  • Типизированные свойства
  • Стрелочные функции
  • Ограниченная ковариация возвращаемого типа и контравариантность типа аргумента
  • Присваивающий оператор объединения с null
  • Распаковка внутри массивов
  • Разделитель в числовых литералах
  • Слабые ссылки
  • Обработка исключений из метода __toString()

8.0

8.1

8.2

8.3

Паттерны

Типы данных

    • null
      • Скалярные:
      • bool
      • int
      • float
      • string
    • array
    • object
    • resource
    • never
    • void
    • self, parent, static
    • true, false

Магические методы

  • __construct(mixed ...$values = ""): void - конструктор, вызывается при new ClassName($param1, $param2, $param3)
  • __destruct() - деструктор - вызывается при уничтожении объекта
  • __call(string $name, array $arguments): mixed - вызывается при вызове метода с параметрами
  • __callStatic(string $name, array $arguments): mixed - вызывается при вызове статического метода с параметрами
  • __get(string $name): mixed - будет выполнен при чтении данных из недоступных (защищённых или приватных) или несуществующих свойств.
  • __set(string $name, mixed $value): void - будет выполнен при записи данных в недоступные (защищённые или приватные) или несуществующие свойства.
  • __isset(string $name): bool - будет выполнен при использовании isset() или empty() на недоступных (защищённых или приватных) или несуществующих свойствах.
  • __unset(string $name): void - будет выполнен при вызове unset() на недоступном (защищённом или приватном) или несуществующем свойстве.
  • __sleep(): array - Если метод определили, он выполняется перед сериализацией. Метод может очистить объект и должен вернуть массив с именами всех переменных этого объекта, которые должны быть сериализованы. Если метод ничего не возвращает, то сериализуется константа null и выдаётся предупреждение E_NOTICE.
  • __wakeup(): void - восстановить соединения с базой данных, которые могли потеряться во время сериализации, и выполнить другие задачи повторной инициализации.
  • __serialize(): array - Если метод определили, функция выполняется перед сериализацией. Метод должен создать и вернуть ассоциативный массив пар ключ и значение, которые представляют сериализованную форму объекта.
  • __unserialize(array $data): void - Если метод определили, PHP передаст методу массив, который восстановил и вернул метод __serialize(). Затем, если нужно, метод восстанавливает свойства объекта из этого массива.
  • __toString(): string - разрешает классу выбирать, как класс будет реагировать, когда с ним обращаются как со строкой.
  • __invoke( ...$values): mixed - вызывается, когда скрипт пытается выполнить объект как функцию.
  • __set_state(array $properties): object - Этот статический метод вызывается для тех классов, которые экспортируются функцией var_export().
  • __clone(): void - После завершения клонирования, если метод __clone() определён, то будет вызван метод __clone() вновь созданного объекта для возможного изменения всех необходимых свойств.
  • __debugInfo(): array - Этот метод вызывается функцией var_dump(), когда необходимо вывести список свойств объекта. Если этот метод не определили, выводится каждое свойство объекта c модификаторами public, protected и private

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

    • $GLOBALS - Ссылается на переменные глобальной области видимости
    • $_SERVER - это массив (array), содержащий такую информацию, как заголовки, пути и местоположения скриптов. Записи в этом массиве создаются веб-сервером, поэтому нет гарантии, что каждый веб-сервер будет предоставлять любую из этих переменных
    • $_GET - Ассоциативный массив переменных, переданных скрипту через параметры URL (известные также как строка запроса).
    • $_POST - Ассоциативный массив данных, переданных скрипту через HTTP методом POST при использовании application/x-www-form-urlencoded или multipart/form-data в заголовке Content-Type запроса HTTP.
    • $_FILES - Ассоциативный массив элементов, загруженных в текущий скрипт через метод HTTP POST.
    • $_COOKIE - Ассоциативный массив значений, переданных скрипту через HTTP Cookies.
    • $_SESSION - Ассоциативный массив, содержащий переменные сессии, которые доступны для текущего скрипта.
    • $_REQUEST - Ассоциативный массив, который по умолчанию содержит данные переменных $_GET, $_POST и $_COOKIE.
    • $_ENV - Ассоциативный массив значений, переданных скрипту через переменные окружения.

Установка

Синтаксис

ООП

IDE

Отладка

Организация кода

Библиотеки

CMS

  • WordPress
  • Drupal
  • Joomla
  • Livestreet

Фреймворки

  • Symfony
  • Laravel
  • Zend Framework
  • Yii
  • CodeIgniter
  • Nette Framework
  • CakePHP
  • Slim

Ссылки и доп. информация