phossa / phossa-shared
其他 phossa 包的共享包
Requires
- php: >=5.4.0
README
简介
Phossa-shared 是其他 phossa 包所需的共享包。
安装
使用 composer
工具安装。
composer require "phossa/phossa-shared=1.*"
或在你的 composer.json
中添加以下行
{ "require": { "phossa/phossa-shared": "^1.0.9" } }
特性
-
异常
所有 phossa 异常都实现了
Phossa\Shared\Exception\ExceptionInterface
。要扩展 phossa 异常,<?php namespace Phossa\Cache\Exception; class BadMethodCallException extends \Phossa\Shared\Exception\BadMethodCallException { }
-
消息
MessageAbstract
类是所有 phossa 包中所有Message
类的基类。-
定义包相关的
Message
类Message
类用于将消息代码转换为可读消息,并且 必须 定义自己的属性$messages
。<?php namespace Phossa\Cache\Message; use Phossa\Shared\Message\MessageAbstract; class Message extends MessageAbstract { // use current year_month_date_hour_minute const CACHE_MESSAGE = 1512220901; // driver failed const CACHE_DRIVER_FAIL = 1512220902; protected static $messages = [ self::CACHE_MESSAGE => 'cache %s', self::CACHE_DRIVER_FAILT => 'cache driver %s failed', ]; }
-
Message
类用法通常只使用
Message::get()
和Message::CONST_VALUE
。use Phossa\Cache\Message\Message; ... // throw exception throw new Exception\RuntimeException( Message::get(Message::CACHE_DRIVER_FAIL, get_class($driver)), Message::CACHE_DRIVER_FAIL );
-
消息加载器
用于加载不同的代码到消息映射,例如语言文件。
namespace Phossa\Cache; use Phossa\Shared\Message\Loader\LanguageLoader; // set language to 'zh_CN' $langLoader = new LanguageLoader('zh_CN'); // will load local `Message\Message.zh_CN.php` language file Message\Message::setLoader($langLoader); // print message in chinese echo Message\Message::get( Message::CACHE_MESSAGE, get_class($object) );
-
消息格式化器
用于对不同设备(如 HTML 页面)的消息进行格式化。
namespace Phossa\Cache; use Phossa\Shared\Message\Formatter\HtmlFormatter; // format message as HTML $formatter = new HtmlFormatter(); Message\Message::setFormatter($formatter); // print as HTML echo Message\Message::get( Message::CACHE_MESSAGE, get_class($object) );
-
-
模式
在
Interface
或Trait
中常用的模式-
StaticTrait
用于包含在一个不能扩展
StaticAbstract
的静态类中。<?php namespace Phossa\MyPackage; class MyStaticClass extends SomeClass { use \Phossa\Shared\Pattern\StaticTrait; ... }
-
StaticAbstract
用于被其他类扩展。
<?php namespace Phossa\MyPackage; class MyStaticClass extends \Phossa\Shared\Pattern\StaticAbstract { ... }
-
SingletonInterface
和SingletonTrait
用于包含在单例类中。
<?php namespace Phossa\MyPackage; class MySingletonClass extends SomeClass { use \Phossa\Shared\Pattern\SingletonTrait; ... }
用法
$obj = MySingletonClass::getInstance();
这个单例实现有一个特性,允许单例类进行扩展。
<?php namespace Phossa\MyPackage; class MyNewSingletonClass extends MySingletonClass { ... }
-
ShareableInterface
和ShareableTrait
Shareable
允许多个实例,但只有一个全局副本。例如全局事件管理和许多本地事件管理器。<?php namespace Phossa\Event; use Phossa\Shared\Pattern\ShareableInterface; class EventManager implements ShareableInterface { use \Phossa\Shared\Pattern\ShareableTrait; ... }
用法
// global event manager instance $globalEM = EventManager::getShareable(); // local event manager $localEM = new EventManager(); // this EM global ? if ($globalEM->isShareable()) { ... } else { ... }
-
-
可标记的
添加了
TaggableInterface
和TaggableTrait
。 -
支持 PHP 5.4+、PHP 7.0+、HHVM
-
PHP7 已准备好用于返回类型声明和参数类型声明。
-
PSR-1、PSR-2、PSR-4 兼容。
-
解耦的包可以在没有框架的情况下单独使用。
依赖
PHP >= 5.4.0