ts / common
此包已被弃用且不再维护。未建议替换包。
通用和可重用的合约和异常。
此包尚未发布任何版本,且信息很少。
README
通用/共享合约和异常。
要求
我的所有组件都需要PHP >= 5.4。
安装
使用Composer进行安装:composer require ts/common:~2.2
事件调度器抽象
我的大多数组件都使用了Symfony的事件调度器组件以提供运行时扩展,当我将其用于基于其他框架的项目时,我发现这存在一些问题。
适配器试图尽可能完整地实现功能,同时允许Laravel 4、Symfony2和Zend Framework 2之间的互操作性。
FlagTrait
我发现我需要为各种库或类(例如JSON或SplFileObject)设置选项/标志的能力。此特质使得标记和通过正常的类变量和相关的setter进行标志抽象变得更容易。
使用此特质并设置您想要设置为默认或抽象化的标志,我更喜欢构造函数
use TS\Common\Contract\Flag\FlagInterface; use TS\Common\Contract\Flag\FlagTrait; class JsonLibrary implements FlagInterface { use FlagTrait; private $forceObject = false; private $prettyPrint = true; public function __construct() { $this->addDefaultFlag(JSON_PRETTY_PRINT, 'prettyPrint'); $this->addSetterFlag(JSON_PRETTY_PRINT, 'prettyPrint'); $this->addSetterFlag(JSON_FORCE_OBJECT, 'forceObject', 'setForceObject' /* optional! */); } public function createJson() { return json_encode(/* Some data ... */, $this->getFlags()); } public function setForceObject($forceObject = true) { $this->forceObject = $forceObject; } public function setPrettyPrint($prettyPrint = true) { $this->prettyPrint = $prettyPrint; } }
请注意,尽管默认标志被保存在变量中,但不需要将其附加到setter。它可以来自不同的来源,或由某些其他逻辑设置,而不是手动设置。
$this->getFlags()
在JsonLibrary::createJson()
中会自动将JSON_PRETTY_PRINT
添加到标志中。
可以通过将相应变量设置为false
或调用FlagTrait::removeDefaultFlag($flag)
来禁用默认标志。