- Текучий интерфейс (Fluent Interface)
- stdClass — встроенный в PHP класс, который автоматически используется при преобразовании типов
- Структуры данных — ОО-версии популярных структур данных.
- PHPUnit — фреймворк для тестирования в PHP
- Collect — библиотека для работы с коллекциями в ОО-стиле
- Carbon — библиотека для работы с датами в ОО-стиле
- Stringy — библиотека для работы со строками в ОО-стиле
- Паттерн Фабрика – “функция порождает данные”
- Книга Приёмы объектно-ориентированного проектирования. Паттерны проектирования» (англ. Design Patterns: Elements of Reusable Object-Oriented Software) — книга 1994 года о программной инженерии
- Паттерны без привязки к языку
- Антипаттерны
Вместо
<?php
// В одном месте
$html1 = markdownToHtml($markdown1, ['sanitize' => true]);
// Где-то в другом месте
$html2 = markdownToHtml($markdown2, ['sanitize' => true]);
Используем “конфигурирование”
<?php
$md = new Markdown(['sanitize' => true]);
$html1 = $md->render($markdown1);
$html2 = $md->render($markdown2);
Конфигурирование – передача опций (различных настроек необходимых данной библиотеке) в конструктор во время создания объекта
Дополнительные материалы
Как изменить конфигурацию ждя конкретного вызова метода
Каждый раз новый объектСеттер- Дополнительный параметр в метод (!)
stdClass – предопределенный класс php
в stdClass
нет предопределённых свойств и методов, но объекты этого класса могут наполняться любыми свойствами в процессе работы
<?php
$obj = new stdClass();
$obj->key = 'value';
var_dump($obj);
// class stdClass#1 (1) {
// public $key =>
// string(5) "value"
// }
Преобразование ассоциативного массива в объект приводит к созданию объекта класса stdClass
;
<?php
$userAsArray = [
'name' => 'George',
'age' => 18
];
$userAsObject = (object) $userAsArray;
var_dump($userAsObject);
// class stdClass#2 (2) {
// public $name =>
// string(6) "George"
// public $age =>
// int(18)
// }
Многие фреймворки используют stdClass
для хранения конфигурации
- Каждый тестовый класс состоит из тестовых методов.
- Тестовые методы всегда начинаются с префикса
test
- Проверки в PHPUnit выполняются с помощью специальных функций, например
- Метод
assertEquals
принимает на вход два значения: Expected – ожидаемый результат — то, что должна вернуть функция и Actual – оезультат, который на самом деле вернула функция. assertTrue
(иassertFalse
) – принимают только один аргумент.
- Метод
Дизайн тестов на основе классов теряет свою популярность. Современный подход растёт из BDD процесса. Синтаксически такие тесты часто полагаются на функции высшего порядка describe
и it
.
<?php
describe('Example', function () {
$object = new stdClass();
$object->name = 'pho';
context('name', function () use ($object) {
it('is set to pho', function() use ($object) {
expect($object->name)->toBe('pho');
});
});
});