PHP: различия между версиями
Перейти к навигации
Перейти к поиску
Artem (обсуждение | вклад) |
Artem (обсуждение | вклад) |
||
Строка 25: | Строка 25: | ||
cd /etc/php/8.1/cli/conf.d | 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; | 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; | ||
</pre> | |||
= Менеджер зависимостей = | |||
Обычно используется Composer https://getcomposer.org/ | |||
Всегда ставьте конкретную версию | |||
<pre> | |||
sudo wget -O /usr/local/bin/composer https://getcomposer.org/download/2.5.1/composer.phar | |||
sudo chmod +x /usr/local/bin/composer | |||
</pre> | </pre> | ||
Версия от 17:15, 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
Переделать все ссылки в 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
- http://php.net/manual/ru/migration53.php
- namespaces - http://php.net/manual/ru/language.namespaces.php
- closures - http://php.net/manual/ru/functions.anonymous.php
5.4
- http://php.net/manual/ru/migration54.new-features.php
- traits - http://php.net/manual/ru/language.oop5.traits.php
- short array syntax
5.5
- http://php.net/manual/ru/migration55.php
- finally - http://php.net/manual/ru/language.exceptions.php
- generators - http://php.net/manual/ru/language.generators.php
5.6
- http://php.net/manual/ru/migration56.new-features.php
- variadic functions
- argument unpacking
7.0
- http://php.net/manual/ru/migration70.php
- return types
- scalar typehints
7.1
- http://php.net/manual/ru/migration71.php
- const visibility
- nullables
- multiple exceptions
7.2
- http://php.net/manual/ru/migration72.php
- objects type hint
- abstract function override
7.3
- http://php.net/manual/ru/migration73.php
- references in list assignments
7.4
- https://www.php.net/manual/ru/migration74.php
- Типизированные свойства
- Стрелочные функции
- Ограниченная ковариация возвращаемого типа и контравариантность типа аргумента
- Присваивающий оператор объединения с null
- Распаковка внутри массивов
- Разделитель в числовых литералах
- Слабые ссылки
- Обработка исключений из метода __toString()
8.0
8.1
8.2
8.3
Паттерны
- https://designpatternsphp.readthedocs.io/en/latest/README.html
- https://refactoring.guru/ru/design-patterns
- https://www.php.net/spl
Типы данных
- 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