PHP

Материал из Artem Aleksashkin's Wiki
Перейти к навигации Перейти к поиску

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

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

Установка

Официальные версии PHP в Ubuntu

Ubuntu 14.04 16.04 18.04 20.04 22.04 24.04
PHP 190-220°C Не нужен 40-100mm/s
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

Переделать все ссылки в php config

cd /etc/php/8.1/fpm/conf.d
for i in `ls -1`; do id=`echo $i|awk -F\- '{print $1}'; `;name=`echo $i|awk -F\- '{print $2}'`;rm $i;ln -s ../../mods-available/$name $i;done;

cd /etc/php/8.1/cli/conf.d
for i in `ls -1`; do id=`echo $i|awk -F\- '{print $1}'; `;name=`echo $i|awk -F\- '{print $2}'`;rm $i;ln -s ../../mods-available/$name $i;done;

Менеджер зависимостей

Обычно используется Composer https://getcomposer.org/

Всегда ставьте конкретную версию

sudo wget -O /usr/local/bin/composer https://getcomposer.org/download/2.5.1/composer.phar
sudo chmod +x /usr/local/bin/composer

История

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

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