gpt4 book ai didi

php - PHP中的类方法访问控制

转载 作者:可可西里 更新时间:2023-10-31 22:45:18 26 4
gpt4 key购买 nike

当对象方法在不同上下文(我系统中的 API)中使用时,我需要组织某种对对象方法的访问控制。这是代码示例:

    class A
{
public function doA(){}
public function doB(){}
}

class APIAClient
{
public function getA()
{
return new A();
}
}

class APIBClient {
public function getA()
{
return new A();
}
}

在 APIAClient 中对象 A 应该同时具有方法 doA() 和 doB(),但在 APIBClient 中不应该有 doB() 方法。

现在我已经实现了 APIBClientAProxy(由 APIBCleint->getA() 返回)

   class APIBClientAProxy
{
private $a = new A;
public function doA()
{
$this->a->doA()
}
}

但可能有更好的模式来解决我的问题,而无需为每个上下文(即 API)使用额外的代理对象。我正在考虑在特定上下文中使用允许方法列表的魔法 __call 方法,但魔法调用很难做文档,文档是我应用程序的重点(API 应该很好地记录)

谢谢!

最佳答案

您可以通过特征使用组合(PHP 5.4 中引入),而不是继承。

先定义trait

trait A {
public function doA() {
// do something here
}
}

trait B {
public function doB() {
// do something here
}
}

然后在你的类声明中使用这些特征

class APIAClient {
use A, B

}

class APIBClient {
use A
}

关于php - PHP中的类方法访问控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13686706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com