Скалярные: bool (логический тип), int (целые числа), float (дробные числа), string
(строки)
Смешанные: array (массивы), object (объекты), enum (PHP8.1)
Специальные типы: null ("пустой" тип), resource (ресурсы)
Псевдотипы: Iterable, mixed (любой тип PHP8), callable (функции)
Смешанные: array (массивы), object (объекты), enum (PHP8.1)
Специальные типы: null ("пустой" тип), resource (ресурсы)
Псевдотипы: Iterable, mixed (любой тип PHP8), callable (функции)
xdebug, логи, dd или echo, debug_backtrace (есть риски его использования в случае с длинными
трейсами и отказе логов сентри и сети)
private
- Видна только в своем собственном классеpublic
- Видна для любого другого кода, осуществляющего доступ к классуprotected
- Видна только родительских классов и классов, которые расширяют текущий
классПо дефолту все методы должны быть private - если специально не предусмотрено иного.
PSR-1 - Basic Coding Standard
PSR-12 - Extended Coding Style Guide
PSR-4 — Autoloading Standard
PSR-3 - Logger Interface
PSR-6 - Caching Interface
PSR-7 - HTTP Message Interfaces
PSR-11 - Container Interface
PSR-14 - Event Dispatcher
PSR-15 - HTTP Handlers
PSR-16 - Simple Cache
PSR-12 - Extended Coding Style Guide
PSR-4 — Autoloading Standard
PSR-3 - Logger Interface
PSR-6 - Caching Interface
PSR-7 - HTTP Message Interfaces
PSR-11 - Container Interface
PSR-14 - Event Dispatcher
PSR-15 - HTTP Handlers
PSR-16 - Simple Cache
Менеджер пакетов для управления зависимостями
Composer update создаст новый composer.lock файл и проапдейтит где возможно до последних версий в соответствии с composer.json.
Composer install не будет менять composer.lock и апдейтить версии - просто установит то что уже есть в composer.lock.
Composer update создаст новый composer.lock файл и проапдейтит где возможно до последних версий в соответствии с composer.json.
Composer install не будет менять composer.lock и апдейтить версии - просто установит то что уже есть в composer.lock.
$this - указывает на текущий объект
self - всегда указывает на тот класс в котором функция объявлена
static - на тот класс от которого вызывается, реализуя позднее статическое связывание
self - всегда указывает на тот класс в котором функция объявлена
static - на тот класс от которого вызывается, реализуя позднее статическое связывание
in_array имеет сложность O(N)
Для больших массивов лучше собрать хэшмап и проверять array_key_exists, сложность в среднем O(1) в подготовленном массиве.
Для больших массивов лучше собрать хэшмап и проверять array_key_exists, сложность в среднем O(1) в подготовленном массиве.
Массивы передаются по значению, но чтоб избежать копирований больших кусков памяти,
копирование происходит только при попытке изменения массива
Count лежит в структуре массива, по этому сложность O(1)
Псевдотип, который может содержать в себе заданный код функции, они же анонимные функции.
Может быть строкой ('ClassName::method', 'in_array'), массивом ([Foo::class, 'bar']) или кодом.
Может быть строкой ('ClassName::method', 'in_array'), массивом ([Foo::class, 'bar']) или кодом.
Классифицированные ошибки. Поймать исключение можно при помощи catch.
Так же в конструкции есть блок finally, который выполниться всегда, не зависимо от того было ли выброшено исключение.
Исключения можно наследовать и переопределять. Можно наследовать исключения от интерфейсов и перехватывать по ним.
Исключения по ошибки памяти невозможно отловить.
Так же в конструкции есть блок finally, который выполниться всегда, не зависимо от того было ли выброшено исключение.
Исключения можно наследовать и переопределять. Можно наследовать исключения от интерфейсов и перехватывать по ним.
Исключения по ошибки памяти невозможно отловить.
Анонимные функции, также известные как замыкания (closures), позволяют создавать функции, не
имеющие определённых имён.
Замыкание инкапсулированную область видимости. Передать значение в замыкание можно через конструкцию use.
Замыкание инкапсулированную область видимости. Передать значение в замыкание можно через конструкцию use.