Академический Документы
Профессиональный Документы
Культура Документы
Чужой код
План вебинара
План вебинара
fields = []
Свойства
(данные)
Объект
name = null
Анатомия объекта
Form
fields = []
Свойства
(данные)
Объект
name = null
errors = []
Анатомия объекта
Form
fields = []
Свойства
(данные)
Объект
name = null
errors = []
validate()
Методы
getErrors() (поведение)
Анатомия объекта
Form
fields = []
Свойства
(данные)
Объект
name = null
Состояние
errors = []
validate()
Методы
getErrors() (поведение)
Отличия объекта от массива
Массив Объект
Формочка
для печенья
Что такое класс?
Песочное тесто
Шаблон класса
Формочка
для печенья
Объекты: печенье
Присвоить объект
переменной
Жизненный цикл объекта
Присвоить объект
переменной
Использовать методы и
свойства объекта
Где пригодится объект
Где пригодится объект
!
Можно написать класс, реализующий всю
работу с 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.
Конструктор автоматически вызывается при создании объекта.
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);
Когда есть смысл брать библиотеку
Когда есть смысл брать библиотеку
Установка
Как использовать библиотеку
Установка
Подключение
Как использовать библиотеку
Установка
Подключение
Использование
Как использовать библиотеку
Подключение
Использование
Как использовать библиотеку
Использование
Как использовать библиотеку
5. начать использование
Зависимости
Библиотеки в своей работе могут полагаться на
другие библиотеки.
Такие отношения называются зависимостями.
Зависимости
Библиотеки в своей работе могут полагаться на
другие библиотеки.
Такие отношения называются зависимостями.
Скачать composer.phar
Как работать с Composer
Скачать composer.phar
Выполнить инициализацию
Как работать с Composer
Скачать composer.phar
Выполнить инициализацию
Скачать composer.phar
Выполнить инициализацию
NPM Composer
Как установить идет вместе с node.js скачать с офф. сайта
1. Инструкция по установке:
https://getcomposer.org/doc/00-intro.md#installation-linux-unix-osx
Проверка установки
Инициализация Composer в проекте
Инициализация Composer в проекте
– Выполнить команду:
composer install
Инициализация Composer в проекте
Подключение Composer
После инициализации Composer в проекте, в файле сценария
необходимо подключить файл autoload.php из папки «vendor»
composer.json
composer.json – это специальный файл конфигурации,
который создается при инициализации Composer.
{
"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)
3. Выполнить команду:
composer require <имя библиотеки>
Поиск библиотеки через Composer
Поиск библиотеки через Composer
Библиотеку также можно найти прямо через интерфейс Composer
Поиск библиотеки через Composer
Библиотеку также можно найти прямо через интерфейс Composer
Поиск происходит по имени библиотеки и по её описанию:
Поиск библиотеки через Composer
Библиотеку также можно найти прямо через интерфейс Composer
Поиск происходит по имени библиотеки и по её описанию:
?
Как я могу отправить сообщение электронной
почты из своего сценария? Я что-то слышал про
встроенную функцию mail()
Отправка email из PHP
?
Как я могу отправить сообщение электронной
почты из своего сценария? Я что-то слышал про
встроенную функцию mail()
!
Не используйте эту функцию для отправки
почты. Вам нужна качественная библиотека для
работы с email.
Отправка email из PHP
?
Как я могу отправить сообщение электронной
почты из своего сценария? Я что-то слышал про
встроенную функцию mail()
!
Не используйте эту функцию для отправки
почты. Вам нужна качественная библиотека для
работы с email.
SwiftMailer умеет:
– отправлять письма с большими вложениями
– формировать письма с html форматированием
– поддерживает отправку разными способами
Из чего состоит SwiftMailer
SmtpTransport
Отвечает за способ отправки.
Содержит параметры доступа
к SMTP серверу
Из чего состоит SwiftMailer
SmtpTransport Mailer
Отвечает за способ отправки.
Непосредственно отправляет
Содержит параметры доступа
сообщение электронной почты
к SMTP серверу
Из чего состоит 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: использование
Установка
Использование
<?php
require 'vendor/autoload.php';
$rules = [
'email'
=> 'required|valid_email',
'password'
=> 'required|min_len,8',
'login'
=> 'required|alpha_numeric',
'phone'
=> 'phone_number'
];
if (!$validated_data) {
$errors = $gump
->get_errors_array();
}
else {
// форма прошла валидацию
}
GUMP: использование
Установка
Использование
<?php
require 'vendor/autoload.php';
$rules = [
'email'
=> 'required|valid_email', Массив с правилами для валидации
'password'
=> 'required|min_len,8',
'login'
=> 'required|alpha_numeric',
'phone'
=> 'phone_number'
];
if (!$validated_data) {
$errors = $gump
->get_errors_array();
}
else {
// форма прошла валидацию
}
Imagine - работа с графикой
Imagine – это мощная библиотека для выполнения операций
над изображениями
Imagine умеет:
– изменять размер изображений (ресайз)
– обрезать изображения (кадрирование)
– накладывать текст и графику на изображение
– накладывать фильтры и эффекты
Imagine: использование
Установка
Использование
<?php
$imagine = new Imagine\Gd\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