【问题标题】:Dynamic class method name in phpphp中的动态类方法名称
【发布时间】:2018-03-21 12:51:51
【问题描述】:

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

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())。

【问题讨论】:

  • 是的,这似乎是关键。太感谢了。请您发布一个答案以便我接受它还是我应该自己发布完整的解决方案?
  • 欢迎。很高兴听到它有帮助。

标签: php class design-patterns graphql graphql-php


【解决方案1】:

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

public static function __callStatic($name, $arguments)
{
    //$name is your type
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 2018-02-22
    • 2018-07-08
    • 2015-07-27
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多