mekras/class-helpers

PHP类的一些常用辅助函数

v1.5 2016-08-22 10:20 UTC

This package is auto-updated.

Last update: 2021-06-29 01:02:11 UTC


README

Latest Stable Version License Build Status Coverage Status

GettersCacheTrait

允许在对象生命周期内缓存getter返回的值。

示例

<?php
use Mekras\ClassHelpers\Traits\GettersCacheTrait;

class MyClass
{
    use GettersCacheTrait;

    private $foo;

    public function getFoo()
    {
        return $this->getCachedProperty(
            'foo',
            function () { return new FooClass($this->foo); }
        );
    }

    public function setFoo($value)
    {
        if ($value instanceof FooClass) {
            $this->setCachedProperty('foo', $value);
            $value = $value->getId();
        }
        $this->foo = $value;
    }
}

LoggingHelperTrait

  • 日志记录器设置/获取器。
  • getLogger在没有设置日志记录器时返回NullLogger — 你可以省略日志记录器检查。
  • 快速记录异常的方法。

示例

<?php
use Mekras\ClassHelpers\Traits\LoggingHelperTrait;

class MyClass
{
    use LoggingHelperTrait;

    public function foo()
    {
        ...
        $this->getLogger()->notice('...');
    }

    public function bar($value)
    {
        try {
            ...
        } catch (\Exception $e) {
            $this->logException($e, 'Executing bar');
        }
    }
}

WrapperTrait

创建包装类辅助函数

示例

<?php
use Foo\FooInterface;
use Mekras\ClassHelpers\Traits\WrapperTrait;

class MyClass implements FooInterface
{
    use WrapperTrait;

    public function __construct(FooInterface $wrappedObject)
    {
        $this->setWrappedObject($wrappedObject);
    }

    public function foobar()
    {
        // Overridden logic here
    }
}

$foo = get_foo_instance(); // Somehow get instance of class implementing FooInterface
$wrap = new MyClass($foo);

// Now $wrap can be used instead of $foo, but with overridden foobar method.