2015-11-24 3 views
1

Я хочу знать, как я могу назвать мою index функция доступна в Appointments классе, структура, как это:Как вызвать функцию класса из другого класса?

class Appointments extends CI_Controller 
{ 
public function __construct() 
{ 
    parent::__construct(); 
    $this->load->library('session'); 

    if ($this->session->userdata('language')) 
    { 
     $this->config->set_item('language', $this->session->userdata('language')); 
     $this->lang->load('translations', $this->session->userdata('language')); 
    } 
    else 
    { 
     $this->lang->load('translations', $this->config->item('language')); 
    } 
} 

/** 
* @param string $appointment_hash 
*/ 

public function index($appointment_hash = '') 
{... 

из другого класса под названием Backend_api. Обычно для вызова функции я загружаю модель, но в этом случае у меня нет модели, а только класса. Извините, если вопрос глуп, но я новичок в CodeIgniter, и я не нашел ничего, что могло бы мне помочь.

ответ

0

Из того же класса можно назвать как этот

$this->index($appointment_hash); 

Вы можете расширьте класс назначений в backend_api, а также не создайте имя функции как index() в контроллере backend_api

class Backend_api extends Appointments { 
public function __construct() 
{ 
    parent::__construct(); 
    $this->index($appointment_hash); 

} 

} 
+0

Проблема теперь в том, что у меня уже есть расширения, как я могу расширить несколько классов на данный момент? – Dillinger

+0

Вы не можете (http://php.net/manual/en/keyword.extends.php) Чтобы решить эту проблему, вы можете просто создать экземпляр класса Appointments внутри Backend_api, как было предложено выше. Более элегантный способ сделать это - использовать инъекцию зависимостей: http://php-di.org/doc/understanding-di.html/code.tutsplus.com/tutorials/dependency-injection-in-php--net -28146 –

0

Это очень легко, просто сделать:

$this-> index(<parameter>); 

Я очень рекомендую посмотреть на PHP документации: http://php.net/manual/en/language.oop5.basic.php

+0

Nope man, я не в том же классе Я хочу вызвать функцию индекса, расположенную в классе Appointments из класса Backend_api – Dillinger

+0

Извинения, из вашего примера кода это похоже на то, что вы в одном и том же класс, но я не сделал ваш комментарий должным образом. Если вы пытаетесь получить доступ к функции от другого, вы всегда можете создать экземпляр класса Appointments в Backend_api ... или сделать функцию index() функцией statis. –

Смежные вопросы