PHP - серверный скриптовой язык. Любой компоьютерный язык объясняет компьютеру что нужно на зыке программировани. Компилятор переводит текст в машинный код (бинарный код) в файл, который работает с "мозгами" компьютера. В PHP есть посредник между мозгами компютера. PHP - язык сценариев, который помещяет документ в поток вывода. Ответ программы состоит из заголовков.
# ------------------------------------------------------------------- # Особенности языка # ------------------------------------------------------------------- // В процессе работы скрипта есть уникальный идентификатор текущего процесса getmypid(). // Весь вывод (echo) в браузер изначально помещяется (накапливается) в буфере, что бы их потом выдать (отправить) большой пачкой. // Если нужно перехватить вывод нужно использовать функцию ob_start() для перехвата стандартного выходного потока. - _GET -// передача данных из браузера серверу (командная строка для сервера от клиента) - _POST // передача (загрузка) данных из браузера серверу - _SERVER // информация о сервере и среде исполнения # ------------------------------------------------------------------- # Командная строка # ------------------------------------------------------------------- >> php -v >> php -m // список подключенных расширений (хранятся в папке) /ext/ -> .dll расширения (.so для Unix) >> php -S localhost:4000 -t publuc_html // запустить встроенный виртуальный сервер >> php --rf trim // справка по функции >> php -h # ------------------------------------------------------------------- # php.ini (файл настроек) # ------------------------------------------------------------------- - extension=mysqli - extension=openssl - extension=pdo_mysql - max_execution_time = 300 - max_input_time = 60 - memory_limit = 128M - upload_max_filesize=16M - post_max_size=16M # ------------------------------------------------------------------- # Типы данных # ------------------------------------------------------------------- - & // жестка ссылка - $$ // символическая ссылка - integer (int) - double (float) - string - array (list - целые ключи) - boolean // TRUE (истина) / FALSE (ложь) - null // не математический "0" - resourse - object // $obj - переменная всегда хранит не сам объект, а ссылку на него, для копирования объекта нужно пользоваться функцией clone - callable // $переменная выступает в качестве функции обратного вызова (функция, которая в качестве аргумента может принимать другие функции) - mixed // смешанные типы данных (PHP8) - void // для return - не возвращает ничего ценного // В качестве аргумента должен передаваться экземпляр класса типа Person // Это напоминание прогрммисту о том, что в аргумент функции нужно передать объект типа Person // Обычно параметры которые имеют значения по умолчанию добавляются в конец public function methodExample(integer $arg1, Person $person): void { $result = ''; return ClassName; // Возвращает экземпляр класса return $result; } # ------------------------------------------------------------------- # Предопределенные (встроенные классы и константы) # ------------------------------------------------------------------- // Существуют предопределенные (встроенные классы в PHP), от которых мы можем наследоваться и использовать их методы - class Exception - class Error - class Closure - обеспечивает работу замыканий (анонимных функций, позволяя сохранять переменные на момент из вызова). // Замыкание это данный объект, переменные которые захватываются сохраняются именно в данном объекте. // По этой причине переменные не изменяются. Изменить состояние объекта можно при помощи bindTo(). // Предопределенные константы - __FILE__ - __LINE__ - __CLASS__ - __METHOD__ - PHP_EQL # ------------------------------------------------------------------- # PHP7 (новое) # ------------------------------------------------------------------- - define('DB',['USERNAME'=>'root']); // для констант можно задавать массивы - declare(strict_types=1); // строгая типизация - function arSum(array ...$arg): int "..." // передача неопределенного кол-ва аргументов в функцию - function arSum(array ...$arg): int // декларация возвращяемого значения функцией - <=> // новый оператор космический корабль - ?? // новый оператор $user = $_GET['user'] ?? $_POST['user'] ?? 'guest' # ------------------------------------------------------------------- # PHP8 (новое) # ------------------------------------------------------------------- - Новая функция get_debug_type() - Новый тип mixed - Объединение типов (тип 1 | тип 2) - ООП: в конструкторе можно писать в аргументах __constuct(public int $var) - ООП: function() :static - ООП: обращение "::class === get_class()" - ООП: throw get_class(object) - Выражение match (switch) - Новые аннотации "#" // но пока без вложенных без мультистрок # ------------------------------------------------------------------- # Полезные пакеты # -------------------------------------------------------------------
--- Если в двух трейтах содержится метод с одним и тем же именем, будет конфликт, его нужно разрешить --- Интерфейсы реализуются * Интерфейс - это проектирование публичной части (public), т.е. той, которую могут вызывать другие классы это проектирование публичной части (public) // Интерфейсов может быть несколько!!! --- * Новый расширяемый класс примет все что есть с модификаторами <public> и <protected> * Все что у родителя <fanel> (класс, метод) не подлежит наследованию и переопределению * Принимаем все от родителя - в данном классе можем * 1) Использовать существующие методы и свойства * 2) Переопределить существующие методы и свойства (кроме <final>) * 3) Добавить (создать) новый /** * NAMESPACE(PSR 0, PSR 4, composer) * * Дублируют файловую структуру, являются стандартом автозагрузки классов * Решают проблему изолированности кода. Код организуется в визуальные иерархии. * Позволяют избежать конфликтов, если будут загружены классы с одинаковым именем. * При ручном подключении нужно понимать, что за чем подключать (require_once()...) * Для этих целей и существует пространство имен и autoloader... * * Классы подгружаются по мере необходимости * Классы оформляются в виде отдельного файла * * 1) composer init * 2) * { * "autoload": { * "psr-4": { * "Oop\\": "oop/" * } * }, * 3) composer update * 4) require_once __DIR__ . '/../vendor/autoload.php'; */ namespace Oop;
https://raw.githubusercontent.com/iv-litovchenko/maptex_content/master/php.txt