Этот документ иллюстрирует реализацию модели утверждения цепочки ответственности на основе государства в PHP. Поделитесь для вашей справки следующим образом:
Мы разрабатываем веб-сайты, в дополнение к передней и задней части, есть закулисье, в дополнение к управлению контентом, часто включающее “одобрение”.
Например, Министерству торговли следует провести специальную рекламную деятельность, в рамках которой некоторые товары должны подлежать преференциальному режиму.
1. Редактор Министерства торговли Пишет Текст Первым 2. Содержание Документов об экспертизе и утверждении Руководителями Министерства торговли 3. Руководителям товарных отделов необходимо изучить и утвердить цену и инвентаризацию товаров (в случае, если их нет на складе). 4. Возможно, еще будет много лидеров, которых нужно одобрить (с расширением)
Модель, которую мы представляем сегодня, – это Модель цепочки ответственности.
В модели цепочки ответственности многие объекты связаны ссылкой каждого объекта на своих подчиненных, образуя цепочку. Запрос передается по цепочке до тех пор, пока объект в цепочке не решит обработать вторичный запрос. Клиент, отправивший запрос, не знал, какой объект в цепочке в конечном итоге обработал запрос.
Для удобства демонстрации мы устанавливаем цену.
1. Предполагая иерархические отношения: Руководитель товарного отдела > Руководитель коммерческого отдела > Редактор 2. Предположим, что разрешено утверждение только на одном уровне (т. Е. без пропусков, просто для удобства демонстрации) 3. Проверка и утверждение здесь пока не могут быть отозваны.
(Изображение выше: Демонстрационное шоу интерфейса. php )
show.php:
content = content of the text;
$subject->save();
}
}
?>
Chain of Responsibility-Approval
< div > < H2 > process demonstration interface < / H2 > < / div >
Редактор нажимает “Создать текст”, чтобы отправить содержимое, а затем записывает текст в локальный файл JSON (сохранить). Тема текста такова subject.php:
К этому времени копия уже создана и должна быть утверждена.
Менеджер абстрактного класса (лидер). php:
leader = leader; // The key to forming a chain of responsibility
}
public function __construct()
{
$str = file_get_contents(__DIR__.'/subject.json');
$this->subject = json_decode($str);
}
public function step($msg)
{
// It's very important to stand for approval.
// Only when the state of the subject is equal to its own mystate will it be processed
If ($this - > subject - > state == $this - > mystate) {// represents that you are currently dealing with
// In this implementation of the specific approval passed
Echo $msg.'The approval system is:'. $this - > myname;
// Judge whether you have a leader or not, and if you give control to the leader
if ($this->leader){
$this - > subject - > state = this - > leader - > mystate; // hand over control
File_put_contents (_DIR_.'/ subject. json', json_encode ($this - > subject); // save status
}else{
Echo'the approval has been completed';
}
}else{
If ($this - > leader) {// leader is the chain that maintains the entire class
// Let your leaders examine and approve
$this->leader->step($msg);
}
}
}
}Руководители Министерства торговли, Министерства товаров и Большого Босса наследуют этот абстрактный класс.
Руководители Министерства торговли, Министерства товаров и Большого Босса наследуют этот абстрактный класс.
ProductLeader.php:
ProductLeader.php:
После того, как редакторы представят свои копии, они перейдут к этапу “Проверки и утверждения руководства”.:
If (isset ($_GET ['step']) {/// has entered the leadership approval stage
// The key here is
// 1. Determine who the first leader is.
// 2. Maintain the direct relationship between leaders.
require ('manager.php');
require ('BusinessLeader.php');
require ('ProductLeader.php');
require ('LastLeader.php');
$businessLeader = new BusinessLeader();
$productLeader = new ProductLeader();
$lastLeader = new LastLeader();
// Here's how to maintain relationships
$businessLeader->setLeader($productLeader);
$productLeader->setLeader($lastLeader);
Business Leader - > step ('approved');
}Больше читателей, интересующихся контентом, связанным с PHP, могут ознакомиться с темами этого сайта: Введение в объектно-ориентированное программирование Php, Введение в навыки работы с массивами PHP, Введение в базовую грамматику PHP, Краткое описание работы PHP и использования операторов, Краткое описание использования строк Php и данных php+mysql. Введение в библиотечные операции и Краткое описание общих навыков работы с базами данных на PHP
Я надеюсь, что эта статья будет полезна для разработки PHP – программ для всех.