emados/php-statical

允许轻松创建别名,代理静态调用到类的单个实例。

v0.1 2016-07-25 08:35 UTC

This package is not auto-updated.

Last update: 2024-09-12 03:11:22 UTC


README

允许轻松创建别名,代理静态调用到类的单个实例。

安装

composer require emados/php-statical

用法

创建一个别名类,该类将作为特定类的静态代理。例如,对于名为 App\Core\Language 的类,您可以在同一命名空间中创建一个具有不同名称的别名类 App\Core\Lang,或者在不同命名空间中使用相同名称 \Language 或两者 Lang

final class Lang {
    use Statical;
    
    protected function targetClassInstance() {
        return new \App\Core\Language();
    }
}

现在,您可以使用代理类为目标类创建一个单例实例,并允许通过静态方式访问其所有公共 API。

注意

如果您使用具有自动完成功能的 IDE,您可能知道它不会与代理类(别名)一起工作,您可以通过使用 phpdoc 注释来解决这个问题,尽管这需要您在更新目标类 API 时更新代理类的文档。

/**
 * @method static string current() Returns current language code.
 * @method static void force(string $lang) Forces using a specific language code.
 * ...
 */
final class Lang {
    use Statical;
    
    protected function targetClassInstance() {
        return new \App\Core\Language();
    }
}