ts/common

此包已被弃用且不再维护。未建议替换包。

通用和可重用的合约和异常。

维护者

详细信息

github.com/timoschaefer/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)来禁用默认标志。