n7olkachev/php-simple-delegator
Composer 安装命令:
composer require n7olkachev/php-simple-delegator
包简介
Simple decorator trait for PHP
README 文档
README
Why?
You can watch Jeffrey Way's video from Laracon US 2017 with usage example: https://streamacon.com/video/laracon-us-2017/day-2-jeffrey-way (35:00)
Examples
Suppose, we want to create Presenter for our User model:
class User extends Model { protected $fillable = [ 'name', ]; } class UserPresenter { use SimpleDelegator; protected $user; public function __construct($user) { $this->user = $user; } protected function delegatee() { return $this->user; } public function formattedName() { return 'Decorated ' . $this->user->name; } } $decoratedUser = new UserPresenter($user); $decoratedUser->formattedName() // call to decorator method $decoratedUser->name // gets original name from User model
Or, we want to add some additional behavior to our class (as in Jeffrey's example):
class NotifyingThread { protected $thread; public function __construct($thread) { $this->thread = $thread; } public function addReply() { $reply = $this->thread->addReply(); Notification::send( $reply->mentionedUsers(), new YouWereMentioned($reply) ); } } $thread = new NotifyingThread($thread); $thread->addReply($data); // default logic + sending notification
Installation
You can install the package via composer:
composer require n7olkachev/php-simple-delegator
Next, add SimpleDelegator trait to your Decorator class:
use SimpleDelegator;
Testing
$ composer test
Credits
Sponsored by
Web agency based in Minsk, Belarus
License
The MIT License (MIT)
统计信息
- 总下载量: 13
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-08-28