Вы находитесь на странице: 1из 180

Раздел 9:

Чужой код
План вебинара
План вебинара

– что такое объект


План вебинара

– что такое объект


– демонстрация работы с объектами
План вебинара

– что такое объект


– демонстрация работы с объектами
– что такое библиотека
План вебинара

– что такое объект


– демонстрация работы с объектами
– что такое библиотека
– пакетный менеджер Composer
План вебинара

– что такое объект


– демонстрация работы с объектами
– что такое библиотека
– пакетный менеджер Composer
– обзор популярных библиотек
План вебинара

– что такое объект


– демонстрация работы с объектами
– что такое библиотека
– пакетный менеджер Composer
– обзор популярных библиотек
– демонстрация работы с Composer
План вебинара

– что такое объект


– демонстрация работы с объектами
– что такое библиотека
– пакетный менеджер Composer
– обзор популярных библиотек
– демонстрация работы с Composer
– документирование кода
Объекты
особый тип данных в PHP, схожий по своей
структуре с ассоциативными массивами
Особенности объектов
Особенности объектов

– содержат в себе данные и функции


Особенности объектов

– содержат в себе данные и функции


– структура объекта задается в момент создания и не меняется
Особенности объектов

– содержат в себе данные и функции


– структура объекта задается в момент создания и не меняется
– имеют внутреннее состояние
Особенности объектов

– содержат в себе данные и функции


– структура объекта задается в момент создания и не меняется
– имеют внутреннее состояние
– объект создается на основе своего «чертежа» - класса
Анатомия объекта
Form
Объект
Анатомия объекта
Form

fields = []
Свойства 

(данные)
Объект

name = null
Анатомия объекта
Form

fields = []
Свойства 

(данные)
Объект

name = null

errors = []
Анатомия объекта
Form

fields = []
Свойства 

(данные)
Объект

name = null

errors = []

validate()

Методы 

getErrors() (поведение)
Анатомия объекта
Form

fields = []
Свойства 

(данные)
Объект

name = null
Состояние

errors = []

validate()

Методы 

getErrors() (поведение)
Отличия объекта от массива

Массив Объект

содержит функции и переменные ДА НЕТ

допускается изменять количество


ДА НЕТ
функций и переменных

имеет внутреннее состояние НЕТ ДА

создаётся на основе класса НЕТ ДА

может скрывать свои функции и


НЕТ ДА
переменные для внешнего кода
Класс
шаблон, по которому создаются объекты
Что такое класс?
Класс – это «чертеж», которому должен соответствовать объект
Что такое класс?
Класс – это «чертеж», которому должен соответствовать объект
Что такое класс?
Класс – это «чертеж», которому должен соответствовать объект
Что такое класс?
Что такое класс?
Песочное тесто
Что такое класс?
Песочное тесто
Шаблон класса

Формочка
для печенья
Что такое класс?
Песочное тесто
Шаблон класса

Формочка
для печенья

Объекты: печенье

Печенье 1 Печенье 2 Печенье 3


Жизненный цикл объекта
Жизненный цикл объекта

Описать новый класс


Жизненный цикл объекта

Описать новый класс

Создать новый экземпляр 



класса - объект
Жизненный цикл объекта

Описать новый класс

Создать новый экземпляр 



класса - объект

Присвоить объект
переменной
Жизненный цикл объекта

Описать новый класс

Создать новый экземпляр 



класса - объект

Присвоить объект
переменной

Использовать методы и
свойства объекта
Где пригодится объект
Где пригодится объект

? Как избежать постоянной передачи ресурса


соединения с MySQL во все функции mysqli?
Где пригодится объект

? Как избежать постоянной передачи ресурса


соединения с MySQL во все функции mysqli?

!
Можно написать класс, реализующий всю
работу с MySQL и передать туда ресурс один
раз.
Итоговый класс для работы с БД
class DbHelper {
  private $db_resource;
  private $last_error = null;

  public function __construct($login, $password, $host, $db) {
  $this ->db_resource = mysqli_connect($host, $login, $password, $db);

if (!$this ->db_resource) {
  $this ->last_error = mysqli_connect_error();
}
}

public function executeQuery($sql) {
$res = mysqli_query($this ->db_resource, $sql);
return $res;
}

public function getLastError() {
  return $this ->last_error;
}

public function getLastId() {
  return mysqli_insert_id($this ->db_resource);
}
}
Итоговый класс для работы с БД
class DbHelper {
  private $db_resource;
  private $last_error = null;

  public function __construct($login, $password, $host, $db) {
  $this ->db_resource = mysqli_connect($host, $login, $password, $db);

if (!$this ->db_resource) {
  $this ->last_error = mysqli_connect_error();
}
}

public function executeQuery($sql) {
$res = mysqli_query($this ->db_resource, $sql);
return $res;
}

Методы класса имеют доступ 

public function getLastError() {
  return $this ->last_error; к внутреннему свойству
}

public function getLastId() {
  return mysqli_insert_id($this ->db_resource);
}
}
Конструктор класса
Конструктор класса – это метод с именем __construct.
Конструктор автоматически вызывается при создании объекта.
Конструктор класса
Конструктор класса – это метод с именем __construct.
Конструктор автоматически вызывается при создании объекта.

class DbHelper {
  private $db_resource;
  private $last_error = null;

  public function __construct($login, $password, $host, $db) {
  $this ->db_resource = mysqli_connect($host, $login, $password, $db);

if (!$this ->db_resource) {
  $this ->last_error = mysqli_connect_error();
}
}
}
Конструктор класса
Конструктор класса – это метод с именем __construct.
Конструктор автоматически вызывается при создании объекта.

class DbHelper { Весь метод будет вызван в момент создания 



  private $db_resource;
  private $last_error = null;
нового объекта этого класса

  public function __construct($login, $password, $host, $db) {
  $this ->db_resource = mysqli_connect($host, $login, $password, $db);

if (!$this ->db_resource) {
  $this ->last_error = mysqli_connect_error();
}
}
}
Конструктор класса
Конструктор класса – это метод с именем __construct.
Конструктор автоматически вызывается при создании объекта.

class DbHelper { Весь метод будет вызван в момент создания 



  private $db_resource;
  private $last_error = null;
нового объекта этого класса

  public function __construct($login, $password, $host, $db) {
  $this ->db_resource = mysqli_connect($host, $login, $password, $db);

if (!$this ->db_resource) {
  $this ->last_error = mysqli_connect_error();
}
}
}

$dbHelper = new DbHelper("root", "", "localhost", "giftube");


Конструктор класса
Конструктор класса – это метод с именем __construct.
Конструктор автоматически вызывается при создании объекта.

class DbHelper { Весь метод будет вызван в момент создания 



  private $db_resource;
  private $last_error = null;
нового объекта этого класса

  public function __construct($login, $password, $host, $db) {
  $this ->db_resource = mysqli_connect($host, $login, $password, $db);

if (!$this ->db_resource) {
  $this ->last_error = mysqli_connect_error();
}
}
}

Создание нового объекта и передача 



параметров в конструктор

$dbHelper = new DbHelper("root", "", "localhost", "giftube");


Ключевое слово «new»
Объект создается на основе класса.

Чтобы создать новый объект, используйте ключевое 



слово «new» вместе с именем класса.

$dbHelper = new DbHelper();


Использование объекта

$dbHelper = new DbHelper("root", "", "localhost", "giftube");



if (!$dbHelper ->getLastError()) {
  $dbHelper ->executeQuery("SELECT * FROM gifs");
}
else {
  print($dbHelper ->getLastError());
}
Использование объекта

Создание объекта на основе класса

$dbHelper = new DbHelper("root", "", "localhost", "giftube");



if (!$dbHelper ->getLastError()) {
  $dbHelper ->executeQuery("SELECT * FROM gifs");
}
else {
  print($dbHelper ->getLastError());
}
Использование объекта

Создание объекта на основе класса

$dbHelper = new DbHelper("root", "", "localhost", "giftube");



if (!$dbHelper ->getLastError()) {
  $dbHelper ->executeQuery("SELECT * FROM gifs");
}
Вызов метода объекта
else {
  print($dbHelper ->getLastError());
}
Библиотека
программный код, оформленный в виде отдельного
компонента, который можно использовать для
решения изолированной задачи
Не надо изобретать велосипед
«Изобретать велосипед» в программировании – 

это попытка самостоятельно писать код для решения задачи, 

для которой уже существуют качественные, готовые решения
Пример изобретения «велосипеда»
Задача:
оставить в массиве только уникальные значения
Пример изобретения «велосипеда»
Задача:
оставить в массиве только уникальные значения
Решение:
написать функцию для фильтрации
Пример изобретения «велосипеда»
Задача:
оставить в массиве только уникальные значения
Решение:
написать функцию для фильтрации
function uniqArray(array $arr) {
$result = [];
foreach ($arr as $item) {
$is_duplicate = false;
foreach ($result as $value) {
if ($value == $item) {
$is_duplicate = true;
  break;
  }
  }

if (!$is_duplicate) {
  $result[] = $item;
}
}
return $result;
}


uniqArray($arr);
Пример изобретения «велосипеда»
Задача:
оставить в массиве только уникальные значения
Решение:
написать функцию для фильтрации
function uniqArray(array $arr) {
$result = [];
foreach ($arr as $item) {
$is_duplicate = false;
foreach ($result as $value) {
if ($value == $item) {
$is_duplicate = true;
  break;
  }
  }

if (!$is_duplicate) {
  $result[] = $item;
}
}
return $result;
}


uniqArray($arr);
Пример изобретения «велосипеда»
Задача:
оставить в массиве только уникальные значения
Решение: Решение:
написать функцию для фильтрации использовать встроенную функцию
function uniqArray(array $arr) {
$result = [];
foreach ($arr as $item) {
$is_duplicate = false;
foreach ($result as $value) {
if ($value == $item) {
$is_duplicate = true;
  break;
  }
  }

if (!$is_duplicate) {
  $result[] = $item;
}
}
return $result;
}


uniqArray($arr);
Пример изобретения «велосипеда»
Задача:
оставить в массиве только уникальные значения
Решение: Решение:
написать функцию для фильтрации использовать встроенную функцию
function uniqArray(array $arr) { array_unique($digits);
$result = [];
foreach ($arr as $item) {
$is_duplicate = false;
foreach ($result as $value) {
if ($value == $item) {
$is_duplicate = true;
  break;
  }
  }

if (!$is_duplicate) {
  $result[] = $item;
}
}
return $result;
}


uniqArray($arr);
Пример изобретения «велосипеда»
Задача:
оставить в массиве только уникальные значения
Решение: Решение:
написать функцию для фильтрации использовать встроенную функцию
function uniqArray(array $arr) { array_unique($digits);
$result = [];
foreach ($arr as $item) {
$is_duplicate = false;
foreach ($result as $value) {
if ($value == $item) {
$is_duplicate = true;
  break;
  }
  }

if (!$is_duplicate) {
  $result[] = $item;
}
}
return $result;
}


uniqArray($arr);
Когда есть смысл брать библиотеку
Когда есть смысл брать библиотеку

– задача достаточно распространена


Когда есть смысл брать библиотеку

– задача достаточно распространена


– найденные решения содержат хорошую документацию
Когда есть смысл брать библиотеку

– задача достаточно распространена


– найденные решения содержат хорошую документацию
– найденные решения имеют большую 

пользовательскую базу
Когда есть смысл брать библиотеку

– задача достаточно распространена


– найденные решения содержат хорошую документацию
– найденные решения имеют большую 

пользовательскую базу

– выбранная библиотека не слишком избыточна 



по набору возможностей
Документация на библиотеку
Документация - 

это справочная информация по использованию библиотеки.
Документация на библиотеку
Документация - 

это справочная информация по использованию библиотеки.

Из чего состоит хорошая документация:


• общее описание назначения библиотеки
• «быстрый старт» - пошаговое руководство

по использованию на примере простой задачи
• описание установки
• подробное описание всех публичных методов
• примеры
Документация на библиотеку 

для шаблонизации - «Twig»
Как использовать библиотеку
Как использовать библиотеку

Установка
Как использовать библиотеку

Установка

Подключение
Как использовать библиотеку

Установка

Подключение

Использование
Как использовать библиотеку

Загрузка и распаковка архива с 



Установка исходными файлами библиотеки

Подключение

Использование
Как использовать библиотеку

Загрузка и распаковка архива с 



Установка исходными файлами библиотеки

Подключение файлов библиотеки 



Подключение во всех необходимых сценариях

Использование
Как использовать библиотеку

Загрузка и распаковка архива с 



Установка исходными файлами библиотеки

Подключение файлов библиотеки 



Подключение во всех необходимых сценариях

Использование Создание объектов и вызов их методов


Twitter Bootstrap
библиотека для верстальщиков.
Предлагает большой набор компонентов и готовые
решения
CSS-библиотека
Twitter Bootstrap – 

самая популярная библиотека для HTML-верстальщиков
CSS-библиотека
Twitter Bootstrap – 

самая популярная библиотека для HTML-верстальщиков

Существенно упрощает верстку за счет готовой сетки, 



адаптивности, типографики и компонентов
CSS-библиотека
Twitter Bootstrap – 

самая популярная библиотека для HTML-верстальщиков

Существенно упрощает верстку за счет готовой сетки, 



адаптивности, типографики и компонентов
Как добавить Bootstrap в проект
Как добавить Bootstrap в проект
1. Скачать архив с официального сайта
Как добавить Bootstrap в проект
1. Скачать архив с официального сайта

2. Распаковать содержимое архива в папку с проектом


Как добавить Bootstrap в проект
1. Скачать архив с официального сайта

2. Распаковать содержимое архива в папку с проектом

3. Подключить необходимые CSS-файлы на страницы


Как добавить Bootstrap в проект
Как добавить Bootstrap в проект
Как добавить Bootstrap в проект
Как добавить Bootstrap в проект

<link rel="stylesheet“ href="css/bootstrap.min.css">


Установка библиотеки в PHP-сценарий
Установка библиотеки в PHP-сценарий
1. найти подходящую библиотеку на сайте
Установка библиотеки в PHP-сценарий
1. найти подходящую библиотеку на сайте

2. загрузить архив с библиотекой


Установка библиотеки в PHP-сценарий
1. найти подходящую библиотеку на сайте

2. загрузить архив с библиотекой

3. распаковать архив в своем проекте


Установка библиотеки в PHP-сценарий
1. найти подходящую библиотеку на сайте

2. загрузить архив с библиотекой

3. распаковать архив в своем проекте

4. подключить в свой сценарий все файлы библиотеки


Установка библиотеки в PHP-сценарий
1. найти подходящую библиотеку на сайте

2. загрузить архив с библиотекой

3. распаковать архив в своем проекте

4. подключить в свой сценарий все файлы библиотеки

5. начать использование
Зависимости
Библиотеки в своей работе могут полагаться на
другие библиотеки.
Такие отношения называются зависимостями.
Зависимости
Библиотеки в своей работе могут полагаться на
другие библиотеки.
Такие отношения называются зависимостями.

Зависимость включает не только название библиотеки, 



но и конкретную версию.
Зависимости
Пакетный менеджер
программа для поиска и установки библиотек по их
названию
Возможности пакетного менеджера
Пакетный менеджер избавляет от необходимости самостоятельно 

искать библиотеки, скачивать, распаковывать, разрешать зависимости 

– все эти задачи он берет на себя
Возможности пакетного менеджера
Пакетный менеджер избавляет от необходимости самостоятельно 

искать библиотеки, скачивать, распаковывать, разрешать зависимости 

– все эти задачи он берет на себя

Обязанности пакетного менеджера:


• скачать и распаковать библиотеку по имени
• автоматически скачать все зависимости
• подключить библиотеки в сценарии
• обновлять библиотеки и зависимости
Перерыв на 10 минут
Composer
пакетный менеджер для PHP
Как работать с Composer
Как работать с Composer

Скачать composer.phar
Как работать с Composer

Скачать composer.phar

Выполнить инициализацию
Как работать с Composer

Скачать composer.phar

Выполнить инициализацию

Подключить файл автозагрузки


Как работать с Composer

Скачать composer.phar

Выполнить инициализацию

Подключить файл автозагрузки

Установить необходимую библиотеку


Сравнение с NPM
NPM – это пакетный менеджер для JavaScript.
Composer предлагает тот же набор возможностей, но для PHP
Сравнение с NPM
NPM – это пакетный менеджер для JavaScript.
Composer предлагает тот же набор возможностей, но для PHP

NPM Composer
Как установить идет вместе с node.js скачать с офф. сайта

Конфигурационный файл package.json composer.json

Инициализация npm init composer init

Установка пакета npm install <package> composer require <package>

Подключение пакетов через require require(“composer/autoload.php”)


Как взаимодействовать с Composer
Как взаимодействовать с Composer
Подготовь мой проект для
работы с библиотеками
Как взаимодействовать с Composer
Подготовь мой проект для
работы с библиотеками

…создаю папку vendor для хранения


библиотек и composer.json
Как взаимодействовать с Composer
Подготовь мой проект для
работы с библиотеками

…создаю папку vendor для хранения


библиотек и composer.json

Установи библиотеку “imagine”


Как взаимодействовать с Composer
Подготовь мой проект для
работы с библиотеками

…создаю папку vendor для хранения


библиотек и composer.json

Установи библиотеку “imagine”

…загружаю последнюю версию библиотеки в


папку vendor, добавляю информацию о ней в
composer.json
Установка Composer
Установка Composer
1. Ссылка на загрузку: https://getcomposer.org/Composer-Setup.exe
2. Скачать и установить
3. Открыть командную строку и выполнить: composer
Установка Composer
1. Ссылка на загрузку: https://getcomposer.org/Composer-Setup.exe
2. Скачать и установить
3. Открыть командную строку и выполнить: composer

1. Инструкция по установке:
https://getcomposer.org/doc/00-intro.md#installation-linux-unix-osx
Проверка установки
Инициализация Composer в проекте
Инициализация Composer в проекте

– Открыть командную строку: 



Win + R ➔ cmd

– Перейти в папку с проектом


– Выполнить команду:

composer init

– Выполнить команду:

composer install
Инициализация Composer в проекте
Подключение Composer
После инициализации Composer в проекте, в файле сценария 

необходимо подключить файл autoload.php из папки «vendor»
composer.json
composer.json – это специальный файл конфигурации, 

который создается при инициализации Composer.

В composer.json хранится информация о свойствах вашего проекта, 



а также список установленных библиотек и их версий.
Пример composer.json

{
    "name": "frexin/testphp",
    "type": "library",
    "authors": [
        {
            "name": "Vasya",
            "email": "vasya@gmail.com"
        }
    ],
    "require": {
        "respect/validation": "^1.1"
    }
}
Пример composer.json

{
    "name": "frexin/testphp",
    "type": "library",
    "authors": [
        {
            "name": "Vasya",
            "email": "vasya@gmail.com"
        }
    ],
    "require": {
        "respect/validation": "^1.1"
    }
}
Здесь описываются все 

библиотеки-зависимости проекта
Пример composer.json

{
    "name": "frexin/testphp",
    "type": "library",
    "authors": [
        {
            "name": "Vasya",
            "email": "vasya@gmail.com"
        }
    ], Название библиотеки
    "require": {
        "respect/validation": "^1.1"
    }
}
Здесь описываются все 

библиотеки-зависимости проекта
Пример composer.json

{
    "name": "frexin/testphp",
    "type": "library",
    "authors": [
        {
            "name": "Vasya",
            "email": "vasya@gmail.com"
        }
    ], Название библиотеки
    "require": {
        "respect/validation": "^1.1"
    }
} Версия библиотеки
Здесь описываются все 

библиотеки-зависимости проекта
Как указать версию библиотеки
Как указать версию библиотеки
Точный номер версии
Когда важна точная версия пакета до последней цифры
Пример: 1.0.2
Как указать версию библиотеки
Точный номер версии
Когда важна точная версия пакета до последней цифры
Пример: 1.0.2

Диапазон версий
Если нужна библиотека старше или младше указанной версии
Пример: >=1.0 >=1.0 < 2.0
Как указать версию библиотеки
Точный номер версии
Когда важна точная версия пакета до последней цифры
Пример: 1.0.2

Диапазон версий
Если нужна библиотека старше или младше указанной версии
Пример: >=1.0 >=1.0 < 2.0

Безопасная версия
Если не хотите сломать свой проект обновлением библиотеки
до версии без поддержки обратной совместимости
Пример: ~1.2
Как установить новую библиотеку
Как установить новую библиотеку
1. Найти в интернете страницу библиотеки (например, на GitHub)
Как установить новую библиотеку
1. Найти в интернете страницу библиотеки (например, на GitHub)

2. Перейти на страницу с описанием установки


Как установить новую библиотеку
1. Найти в интернете страницу библиотеки (например, на GitHub)

2. Перейти на страницу с описанием установки

3. Выполнить команду:

composer require <имя библиотеки>
Поиск библиотеки через Composer
Поиск библиотеки через Composer
Библиотеку также можно найти прямо через интерфейс Composer
Поиск библиотеки через Composer
Библиотеку также можно найти прямо через интерфейс Composer
Поиск происходит по имени библиотеки и по её описанию:
Поиск библиотеки через Composer
Библиотеку также можно найти прямо через интерфейс Composer
Поиск происходит по имени библиотеки и по её описанию:

composer search <имя или описание>


Страница библиотеки
Репозиторий пакетов
Откуда Composer скачивает все библиотеки?
Репозиторий пакетов
Откуда Composer скачивает все библиотеки?

Библиотеки хранятся в центральном хранилище – 



репозитории пакетов.
Репозиторий пакетов
Откуда Composer скачивает все библиотеки?

Библиотеки хранятся в центральном хранилище – 



репозитории пакетов.

Packagist – репозиторий пакетов для Composer


https://packagist.org/
Статистика Packagist

– больше 177 000 библиотек


– больше 1 165 000 версий
– 5 000 новых библиотек каждый месяц
– почти 8 000 000 000 установок за все время
Обзор популярных библиотек
Отправка email из PHP
Отправка email из PHP

?
Как я могу отправить сообщение электронной
почты из своего сценария? Я что-то слышал про
встроенную функцию mail()
Отправка email из PHP

?
Как я могу отправить сообщение электронной
почты из своего сценария? Я что-то слышал про
встроенную функцию mail()

!
Не используйте эту функцию для отправки
почты. Вам нужна качественная библиотека для
работы с email.
Отправка email из PHP

?
Как я могу отправить сообщение электронной
почты из своего сценария? Я что-то слышал про
встроенную функцию mail()

!
Не используйте эту функцию для отправки
почты. Вам нужна качественная библиотека для
работы с email.

Недостатки функции mail():


– проблемы с установкой корректных заголовков
– нельзя использовать сторонний SMTP-сервер
– не поддерживает вложения
– медленно работает
– неудобно указывать множество адресатов,

скрытые копии и т.д.
SwiftMailer – отправка почты
SwiftMailer – это мощная библиотека для отправки email сообщений из php

SwiftMailer умеет:
– отправлять письма с большими вложениями
– формировать письма с html форматированием
– поддерживает отправку разными способами
Из чего состоит SwiftMailer

Библиотека состоит из трех основных классов:


Из чего состоит SwiftMailer

Библиотека состоит из трех основных классов:

SmtpTransport
Отвечает за способ отправки. 

Содержит параметры доступа 

к SMTP серверу
Из чего состоит SwiftMailer

Библиотека состоит из трех основных классов:

SmtpTransport Mailer
Отвечает за способ отправки. 
 Непосредственно отправляет 

Содержит параметры доступа 
 сообщение электронной почты
к SMTP серверу
Из чего состоит SwiftMailer

Библиотека состоит из трех основных классов:

SmtpTransport Mailer Message


Отвечает за способ отправки. 
 Непосредственно отправляет 
 Содержит весь текст, тему, 

Содержит параметры доступа 
 сообщение электронной почты получателей и заголовки 

к SMTP серверу самого сообщения
SwiftMailer: использование
Установка

composer require swiftmailer/swiftmailer

Использование

<?php
// Конфигурация траспорта
$transport = new Swift_SmtpTransport('smtp.example.org', 25);

// Формирование сообщения
$message = new Swift_Message("Просмотры вашей гифки");
$message ->setTo(["keks@htmlacademy.ru" => "Кекс"]);
$message ->setBody("Вашу гифку «Кот и пылесос» посмотрело больше 1 млн!");
$message ->setFrom("mail@giftube.academy", "GifTube");

// Отправка сообщения
$mailer = new Swift_Mailer($transport);
$mailer ->send($message);
GUMP - валидация форм
«Валидация» – это проверка на корректность заполнения полей формы.

GUMP умеет:
– валидировать поля по более, чем 30 встроенным правилам
– объединять условия валидации в цепочки
– фильтровать значения по правилам
– возвращать понятные сообщения об ошибках
GUMP: использование
Установка

composer require wixel/gump


GUMP: использование
Установка

composer require wixel/gump

Использование

<?php
require 'vendor/autoload.php';

$rules = [
'email' => 'required|valid_email',
'password' => 'required|min_len,8',
'login' => 'required|alpha_numeric',
'phone' => 'phone_number'
];

$gump = new GUMP('ru');


$gump ->validation_rules($rules);

$validated_data = $gump ->run($_POST);

if (!$validated_data) {
$errors = $gump ->get_errors_array();
}
else {
// форма прошла валидацию
}
GUMP: использование
Установка

composer require wixel/gump

Использование

<?php
require 'vendor/autoload.php';

$rules = [
'email' => 'required|valid_email', Массив с правилами для валидации
'password' => 'required|min_len,8',
'login' => 'required|alpha_numeric',
'phone' => 'phone_number'
];

$gump = new GUMP('ru');


$gump ->validation_rules($rules);

$validated_data = $gump ->run($_POST);

if (!$validated_data) {
$errors = $gump ->get_errors_array();
}
else {
// форма прошла валидацию
}
Imagine - работа с графикой
Imagine – это мощная библиотека для выполнения операций 

над изображениями

Imagine умеет:
– изменять размер изображений (ресайз)
– обрезать изображения (кадрирование)
– накладывать текст и графику на изображение
– накладывать фильтры и эффекты
Imagine: использование
Установка

composer require imagine/imagine

Использование

<?php
$imagine = new Imagine\Gd\Imagine();

$cat = $imagine ->open('./keks.jpg');


$watermark = $imagine ->open('./logo.png');

$size = $cat ->getSize();


$wSize = $watermark ->getSize();
$bottomRight = new Imagine\Image\Point($size ->getWidth() - $wSize ->getWidth(),
$size ->getHeight() - $wSize ->getHeight());
$cat ->paste($watermark, $bottomRight);
$cat ->save('newcat.png');
Imagine: использование
Imagine: использование
Imagine: использование
Imagine: использование
Документирование кода
добавление к функциям комментариев в
специальном, описывающих их работу
Зачем документировать код
Документирование - это не просто добавление комментариев к функциям.
Документирование кода упрощает сопровождение и навигацию по нему.
Зачем документировать код
Документирование - это не просто добавление комментариев к функциям.
Документирование кода упрощает сопровождение и навигацию по нему.

Преимущества документирования:
– автоматическая генерация документации
– подсказки в IDE
– сложнее допустить ошибку в аргументах 

функции или типе
Подсказки в IDE
/**
* Обрезает текст до указанной длины и
* добавляет в конце знак троеточия
* @param string $text Строка для обрезания
* @param integer $length Длина строки
*
* @return string Обрезанная строка
*/
function cut_text($text, $length) {
return '';
}
Подсказки в IDE
phpDoc - стандарт документирования в PHP

http://docs.phpdoc.org/getting-started
phpDoc - стандарт документирования в PHP
DocBlock - это комментарий над функцией, написаный 

с использованием определённых правил. Включает в себя теги.

http://docs.phpdoc.org/getting-started
phpDoc - стандарт документирования в PHP
DocBlock - это комментарий над функцией, написаный 

с использованием определённых правил. Включает в себя теги.

Тег - это специальное ключевое слово, которое начинается с @.



Теги нужны для задания различных параметров блока.

Например, есть теги для указания аргументов.

http://docs.phpdoc.org/getting-started
phpDoc - стандарт документирования в PHP
DocBlock - это комментарий над функцией, написаный 

с использованием определённых правил. Включает в себя теги.

Тег - это специальное ключевое слово, которое начинается с @.



Теги нужны для задания различных параметров блока.

Например, есть теги для указания аргументов.

/**
* Обрезает текст до указанной длины и
* добавляет в конце знак троеточия
* @param string $text Строка для обрезания
* @param integer $length Длина строки
*
* @return string Обрезанная строка
*/

http://docs.phpdoc.org/getting-started
phpDoc - стандарт документирования в PHP
DocBlock - это комментарий над функцией, написаный 

с использованием определённых правил. Включает в себя теги.

Тег - это специальное ключевое слово, которое начинается с @.



Теги нужны для задания различных параметров блока.

Например, есть теги для указания аргументов.

/**
* Обрезает текст до указанной длины и
* добавляет в конце знак троеточия
* @param string $text Строка для обрезания
Тег для документирования аргументов * @param integer $length Длина строки
*
* @return string Обрезанная строка
*/

http://docs.phpdoc.org/getting-started
phpDoc - стандарт документирования в PHP
DocBlock - это комментарий над функцией, написаный 

с использованием определённых правил. Включает в себя теги.

Тег - это специальное ключевое слово, которое начинается с @.



Теги нужны для задания различных параметров блока.

Например, есть теги для указания аргументов.

/**
* Обрезает текст до указанной длины и
* добавляет в конце знак троеточия
* @param string $text Строка для обрезания
Тег для документирования аргументов * @param integer $length Длина строки
*
Тег для документирования
 * @return string Обрезанная строка
возвращаемого значения */

http://docs.phpdoc.org/getting-started
Обзор основных тегов
Обзор основных тегов
@param /**
Используется для описания одного 
 * @param string $text Строка для обрезания
* @param integer $length Длина строки
аргумента функции */
Обзор основных тегов
@param /**
Используется для описания одного 
 * @param string $text Строка для обрезания
* @param integer $length Длина строки
аргумента функции */

@return
/**
Указывает тип возвращаемого значения 
 * @return string Обрезанная строка
и даёт ему описание */
Обзор основных тегов
@param /**
Используется для описания одного 
 * @param string $text Строка для обрезания
* @param integer $length Длина строки
аргумента функции */

@return
/**
Указывает тип возвращаемого значения 
 * @return string Обрезанная строка
и даёт ему описание */

@deprecated
/**
Помечает функцию как устаревшую и 
 * @deprecated Функция больше не поддерживается
не рекомендует её использование */
Разобранные критерии
Б11 

Нет «велосипедов»

https://up.htmlacademy.ru/php/4/criteries
Разобранные критерии
Б11 

Нет «велосипедов»

Д5 

Документирование методов

https://up.htmlacademy.ru/php/4/criteries

Вам также может понравиться