PHP:$ this-> methodcall()给出错误和CalledClass:methodcall()工作正常

时间:2010-01-20 16:42:17

标签: php

我试图从另一个类中调用方法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()并且它工作正常但我无法改变被调用类中的代码,因为我从另一个调用此函数球队。

任何指导或建议?

1 个答案:

答案 0 :(得分:2)

如果您尝试从另一个类调用的函数是 static ,则需要使用::(范围解析运算符)来调用它。尝试访问静态属性时也是一样。

  

因为静态方法在没有创建对象实例的情况下是可调用的,所以伪变量$ this在声明为static的方法中不可用。

取自PHP: Static Keyword

与此同时,如果您的方法调用无法修改其他成员的代码,则使用CalledClass::getAddress()