в классе «Событие», я хочу присвоить переменную «пользовательское имя» из моего класса «Клиент» одной из переменных класса. В моем классе CustomerTable есть метод, называемый «getCustomer», который создает экземпляр клиента, передавая clientId. Я хочу вызвать этот метод из моего класса Event, чтобы я мог взять имя клиента у этого клиента и назначить его Event.ZF2: Доступ к методу из другого класса из класса
Я попытался сделать мероприятие расширенным AbstractActionController и с помощью диспетчера службы получить метод, как вы можете видеть в примере ниже. Но когда я пытаюсь вызвать get() в классе CustomerTable, появляется сообщение, в котором говорится, что я пытаюсь вызвать get() на не-объект.
В принципе: кто-нибудь знает, как я могу назвать getCustomer() из класса Event?
Мой класс событий, как я понял это:
class Event
{
public $id;
public $CCID;
public $customerName;
public $jobId;
public $timeServer;
public $timeConvert;
public $messageId;
public $message = null;
public $severity;
public $client;
public function exchangeArray($data)
{
$this->id = (isset($data['id'])) ? $data['id'] : null;
$this->CCID = (isset($data['CCID'])) ? $data['CCID'] : null;
// here's the stuff that tries to get the getCustomer() method
$sm = $this->getServiceLocator();
$customer = $sm->get('Admin\Model\CustomerTable')->getCustomer($this->CCID);
$this->customerName = $customer->customerName;
$this->jobId = (isset($data['jobId'])) ? $data['jobId'] : null;
$this->timeServer = (isset($data['TimeServer'])) ? $data['TimeServer'] : null;
$this->messageId = (isset($data['messageId'])) ? $data['messageId'] : null;
$this->severity = (isset($data['Severity'])) ? $data['Severity'] : null;
$this->client = (isset($data['Client'])) ? $data['Client'] : null;
$this->timeConvert = gmdate("H:i", $this->timeServer);
}
}
вы пытались в том числе файл AbstractActionController, когда вы делали событие, расширяете AbstractActionController? возможно, это не сработало из-за этого? –
Когда-либо думал о том, чтобы вводить классы, которые вам нужны в вашу модель? Кроме того, не вводите «ServiceLocator», ** вводите только «CustomerTable» **! – Sam