扩展类和使用主类的特征

时间:2017-04-21 08:50:14

标签: php oop

我正在使用php构建一个api,我对扩展类或使用特征并不熟悉。目前我正在使用特征来更好地构建我的主["bob", "fred"] 类。

请参阅下文了解当前的工作方式。我想知道我是否可以在API类中创建一个类。例如,负责API方法。这需要访问当前实例的路由器和api上的所有方法。

示例

当人们访问webhook

上的API时
/v1/{method}/{verb}/{args}

路由器类

if (!array_key_exists('HTTP_ORIGIN', $_SERVER)) {
    $_SERVER['HTTP_ORIGIN'] = $_SERVER['SERVER_NAME'];
}

try {
    $API = new API($_REQUEST['request'], $_SERVER['HTTP_ORIGIN']);
    echo $API->processAPI();
}

catch (Exception $e) {
    echo json_encode(['error' => $e->getMessage()]);
}

我的主要API类

abstract class router {
    /* 
        Methods which seek out
        * method
        * verb
        * args

        And do authentication
    */
}

1 个答案:

答案 0 :(得分:0)

您可以将webhook类对象注入API类。小例子,按要求。

  class Webhook { // some methods }

  class API extends router {
        private $webhook;

        public function __construct(Webhook $webhook)
        {
             $this->webhook = $webhook;
        }
        // some generic methods specifically for this class

        public function useWebhook()
        {
             $result = $this->webhook->someWebhookMethod();
             // ...
        }

        // Other methods but in different files (for readability and oversight)
        use otherMethod1;
        use otherMethod2;
        // ...
    }

何时可以像这样创建对象

$webhook = new Webhook();
$api = new API($webhook);

$api->useWebhook();

你在找这个吗?

您可以在此处详细了解这种称为“依赖注入”的方法:http://php-di.org/doc/understanding-di.html