0

我正在使用graphql-php开展一个项目。有一个示例建议创建这样的类:

use Project\CategoryType;
use Project\PageType;

class Types {


private static $page;
private static $category;

    public static function page() {
        return self::$page ?: (self::$page = new PageType());
    }

    public static function category() {
        return self::$category ?: (self::$category = new CategoryType());
    }
}

稍后我可以像这样使用此类方法:

Types::page()或者Types::category()

这工作正常。但是,我认为这是一种反模式,可以进行优化。随着项目的增长,类似函数和私有类字段的数量也在增长,这变得不方便。有什么方法可以重构类,这样我就不必为每种类型手动添加一个函数,但仍然像现在一样调用类方法?( Types::page())。

4

1 回答 1

1

请使用 __callStatic 或 __call 魔术方法。http://php.net/manual/en/language.oop5.overloading.php#object.callstatic

public static function __callStatic($name, $arguments)
{
    //$name is your type
}
于 2017-10-10T10:01:29.530 回答