2013-06-06 4 views
0

в классе «Событие», я хочу присвоить переменную «пользовательское имя» из моего класса «Клиент» одной из переменных класса. В моем классе 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); 
    } 
} 
+0

вы пытались в том числе файл AbstractActionController, когда вы делали событие, расширяете AbstractActionController? возможно, это не сработало из-за этого? –

+0

Когда-либо думал о том, чтобы вводить классы, которые вам нужны в вашу модель? Кроме того, не вводите «ServiceLocator», ** вводите только «CustomerTable» **! – Sam

ответ

1

Вот два примера, как вы можете загрузить класс:

use \Admin\Model\CustomerTable; // use namespaces 
$sm = new CustomerTable(); 
$customer = $sm->getCustomer($this->CCID); 

или сделать это как

$sm = new \Admin\Model\CustomerTable\Tidy(); 
$customer = $sm->getCustomer($this->CCID); 
Смежные вопросы