Украина, Днепропетровск
(095) 478-70-11
Процесс, во время которого программа может отслеживать и модифицировать собственную структуру и поведение во время выполнения.
Dependency Injection – это программный шаблон, который реализует принцип объектно-ориентированного программирования "Инверсия управления (Inversion Of Control)". Реализация этого шаблона подразумевает снижения "связанности кода", соответственно, получается код, который легче использовать повторно и сопровождать, то есть, изменение компонент одной части приложения не вызывает ошибок в другой части или необходимости значительных каскадных изменений.
В php это можно представить как пример с двумя классами, которые взаимодействуют друг с другом. Так вот di тут будет представлять собой как передача инстанса второго класса как параметр в первый объект, а не как создание в первом классе постредством конструктора инстанса второго
Так не правильно:
class First { protected $second; function __construct() { $this->second = new Second('123'); } }
Так правильно:
class First { protected $second; function __construct(Second $second) { $this->second = $second; } } $second = new Second('123'); $first = new First($second);
Методы которые находятся в интерфейсах несут только информационный характер, и не могут быть реализованы. В абстрактных кслассах также как и в интерфесах абстрактные методы тоже не могут быть реализованы, но могут присутствовать не абстрактные методы которые несут реализацию.
Интерфесы не содержат атрибутов и не могут ими оперировать, в то время как абстрактный класс может их иметь и использовать в своих не абстрактных методах.
Класс имплиментирует интерфейс, в то время класс наследует абстрактный класс либо его расширяет.
Класс может имплиментировать несколько интерфейсов но не может быть наследником нескольких класов, для множественного наследования используеться trait или магический метод __call
Паттерны проектирования, в основном по предназначению, деляться на 3 крупные группы
Структурные паттерны - отображают возможные способы связей между объектами.
Поведенческие паттерны - страраються создать максимально эффективный камуникации между объктами.
Три функции которые облегчают передачу переменных между контроллерами и отображениями, как вариант). extract() в первом параметре получает ассоциативный массив, который распаковывается в переменные, названия переменных это ключи массива а значения соответственно значения переменных. Например если был передан массив настроек приложения, и для удобства было бы проще обращаться к переменным которые имеют понятные названия.
Функция compact() наоборот позволяет собрать все переменные в массив. Ее удобно использовать когда нужно передать большое количество переменных, например как параметры функций, но так как использовать больше 3 параметров в функции не удобно и есть правила хорошего тона).
list() это не функция, а языковая конструкция которая позволяет за одни ход сразу присвоить нескольким переменным значения. Для этого в параметрах передаются названия а через оператор "=" указываем массив со значениями этих переменных. Переменных в php5 присваиваться с право на лево, а в php7 с лево на право. list($a, $b, $c) = ['a', 'b', 'c'];
Данные функции как и лямбда функции(анонимные) являються инстансами класса Closure
Стандартный вид fn (argument_list) => expr.
Эти функции умеют все тоже что и анонимные, а переменные в которые находятся в родительском пространсве, неявно переносятся по имени в стрелочную функцию, тоесть становятся замыканием
В анонимных функциях пробрасывать переменные с родитеского пространства нужно использую ключевое слово use
В 7 версии существую такие типы данных
Это константа которая отображает разделитель строки. Т.к. в Linux подобных системах и windows этот разделитель разный, / и \ соответственно, то играться с выбором правильно косой не комильфо). Ну вообще конечно WIndows может работать с обоими косыми, поэтому проблемы то и нет как таковой, но если мы хотим разбить строку данных на массив, например взяв магическую константу "__DIR__" лучше использовать DIRECTORY_SEPARATOR для функции explode
Просто указываем данную константу в скриптах и теперь наш движек может работать под разными ОС.
Http(HyperText Transfer Protocol) «протокол передачи гипертекста» - это основной сетевой протокол передачи данных в интернете, который использует клиент-серверную архитектуру. Взаимодействие между клиентом и сервером осуществляется с помощью обмена пакетами которые называются запрос (Request) и ответ (Response). Нынешняя версия 1.1 в спецификации RFC 2616.
Каждый пакет состоит из трех кусков: стартовая строка, заголовки и тело. Обязательной является только стартовая строка.
Стартовые строки разных пакетов имеют разный формат. Формат запроса "МетодЗапроса URI HTTP/Версия", формат ответа "HTTP/Версия КодСостояния Пояснение"
Некоторые методы мы используем в REST API
Representational state transfer - «передача состояния представления»
Это набор правил помогающие программисту правильно написать серверное приложение, которое взаимодействует с различными системами отображения, взаимодействия и масштабированием.
Например googleanalytics в браузере и, в приложении на телефоне.
Общение с сервером происходит через URL адреса, все происходите через протокол HTTP, поэтому обычно используются методы:
Он может быть либо массивом, который можно перебрать, либо объектом реализующий интерфейс Traversable.
Обычно реализовывают интерфейсы Iterator или IteratorAggregate которые являются наследниками Traversable
Callable - это переменные, которые могут быть вызваны как функции. То есть их можно использовать в функциях которые принимают другие функции в параметрах, тогда они будут callback функциями.
Такой тип может быть у строки, если строка включает в себя название функции. Также такой тип может быть у объекта, который включает в себя метод __invoke. Также могут использоваться статические методы класса, но для их реализации потребуется использование call_user_func()
Более подробно можно посмотреть в callback
В php используется неявное приведение типов, это означает что можно сложить две переменных оператором "+" даже если одна из них будет "int", а вторая "string". Php автоматически приведет тип второй переменной к int. Это конечно же являться и плюсом, и минусом. Т.к. может вызывать неожиданную реакцию приложения и потом сложно отследить где, что поломалось. Для решения данной проблемы нужно указывать типы данных явно, при этом хорошим тоном есть указание типов и в параметрах функций, и в возвращаемых данных методов. В общем лучше указывать тип данных везде где можно, при создании свойств в классах и т.п.
Сравнение с использование оператора "==", "!=" обычно работает также в связке с преобразованием типов, то есть если в двух переменных похожие данные например $int = 1 и $str = "1" , то при сравнении они будут идентичны, т.к. сработает неявное приведение. НО эти переменные разных типов и содержат разные данные по типу. Для исключения данной ошибки лучше использовать ВЕЗДЕ тождественные сравнения "===","!=="
... - обозначяет, что функция или метод принимает переменную длину аргументов.
public function setVar(int ...$intVar) { $this->var = $intVar; }
В php используются ссылки на переменные, которые позволяют обратиться к переменной через какую-то другую сущность. Например если мы в функцию отправим переменную A, по ссылке, содержащу например 2, назовем ее B. Потом приизведем действие декримета над B. И потом выведем A то увидим цифру 1
Есть функции, такие как array_map() или usort(), принимают пользовательские callback-функции в качестве параметра.Они могут быть как простыми функциями, так и методами объектов, включая статические методы классов.
Если мы хотим использовать метод класса, то передается индексируемый массив, в котором 0 ключ будет имя класса, 1 ключ - название метода
userFunction(array('MyClass', 'myCallbackMethod'));
$numEven = array_map(function($a) { return $a * 2; }, $numbers);
Это функции которые не имеют названия, обычно используются как callback параметры для других именованных функций.
Были внедрены в php 5.3, до этого использовалась функция create_function(). Она создавала псевдо-анонимные функции, так-как они все равно имели название.
echo preg_replace_callback('~-([a-z])~', function ($match) { return $match[1]; }, 'say-go');
Все лямбда функции являются инстансами класса "Closure".
При помощи ключевого слова "use" мы может передать в локальную область видимости функции, переменную из общей области видимости. Такие функции еще называются замыканиями. Т.к. функция не имеет названия используют ее через ссылку на переменную.
$var = 1; $anonim = function () use ($var ) { var_dump($var ); };
Copyright © 2012-2023 All rights reserved.
created by WPS.