我试图从另一个类中调用方法getDetails()
,而这个类又从它自己的类调用方法(即称为类),它是通过
$this->getAccount()
和$this->getAddress()
在被叫类中我们有$this->getAccount()
和$this->getAddress()
等方法,但是当我打电话时
他们因为调用未定义的方法而得到致命的错误消息,但当我尝试使用CalledClassName::getAddress()
和
CalledClassName::getAddress()
比它工作正常。
我的问题是,正在调用的类(即,calledClass)将始终使用$this->getAddress()
和$this->getAccount()
来获取此类
来自其他团队的信息,有3个团队将调用函数getDetails()
,这些团队将在内部调用getAccount()
和getAddress()
函数,所以当我调用getDetails()
函数时,如何在myside上处理$ this的问题。
代码示例
Calling Class:
CalledClass::getDetails() // Call to getDetails function in CalledClass
CalledClass::
public function postalAddress()
{
return array(
'addressId' => $address->addressId,
'city' => $address->city,
'country' => $address->country,
'postcode' => $address->postcode,
'stateOrProvince' => $address->stateOrProvince,
'street' => $address->streetName,
'streetNumber' => $address->streetNrFirst,
'streetSuffix' => $address->streetNrFirstSuffix
);
};
public function getAddress()
{
return $this->postalAddress();
}
public function setAccount($account)
{
$this->account = $account;
}
public function getAccount()
{
return $this->find('account = 1311143','');
}
public function getDetails()
{
$data = array();
$data[$address] = $this->getAddress();
$data[$account] = $this->getAccount();
return $data;
}
所以现在使用上面的方法它给了我错误,所以如果我使用CalledClass::getAddress()
和CalledClass::getAccount()
并且它工作正常但我无法改变被调用类中的代码,因为我从另一个调用此函数球队。
任何指导或建议?
答案 0 :(得分:2)
如果您尝试从另一个类调用的函数是 static ,则需要使用::
(范围解析运算符)来调用它。尝试访问静态属性时也是一样。
因为静态方法在没有创建对象实例的情况下是可调用的,所以伪变量$ this在声明为static的方法中不可用。
与此同时,如果您的方法调用无法修改其他成员的代码,则使用CalledClass::getAddress()