2013-07-20 2 views
1

У меня есть несколько классов, которые я хочу, чтобы загрузить в качестве модели, но проблема в том, я хочу, чтобы отделить их в нескольких моделях, теперь у меня есть один файл с классами, выглядит следующим образом:Вызов функции модели из другой модели CodeIgniter?

class email { 
     function add($email, $name, $quiet=NULL, $actiovation=NULL) { 
     global $secretstring; 
     global $mail; 
     global $path; 
     global $activating; 

     if (strlen($email) < 1) { 
      if (!isset($quiet)) { 
       msg::getInstance()->addSuccess("Please enter your email address."); 
      } 
      $error = 1; 
     } 
     if (strlen($name) < 1) { 
      if (!isset($quiet)) { 
       msg::getInstance()->addSuccess("Please enter your name."); 
      } 
      $error = 1; 
     } 
        $addData = mysql_fetch_array(sql::getInstance()->query("SELECT id FROM emails WHERE email='".sql::getInstance()->sec($stamp)."'")); // getting id of this email 

} 

class msg { 
    static private $instance = NULL; 
    function addSuccess($success) { 
     $this->success .= $success."\\n "; 
    } 
} 

class sql { 
    static private $instance = NULL; 

    function query($query) { 
     return mysql_query($query); 
    } 

    function sec($string) { 
     return mysql_real_escape_string(htmlspecialchars($string)); 
} 

С примером I может легко вызвать функцию из другого класса? Но проблема в том, когда я хочу вызвать функцию из другой модели, в одной модели я не знаю, как это сделать в CI? Любая помощь, которую я сделал, простой пример, чтобы показать, как я делал классы.

ответ

4

Вам просто нужно убедиться, что вы загружаете модель, которую хотите вызвать функцию в модели, в которой вы хотите использовать эти функции. Как и в контроллере.

Что-то вроде этого:

public class Email extends CI_Model{ 
    function add(...){ 
     $this->load->model('msg'); 
     $this->msg->addSuccess(...); 
    } 
} 

Это действительно так просто.

0

У CI есть два метода вызова функций. Какую бы модель вы ни создали, вам нужно загрузить эту модель в этом классе, где вы хотите использовать этот класс.

  • Ручная загрузка.

    $ this-> load-> model ("your_model_name");

Примечание: Вызовите вышеприведенную строку в том классе, где вы хотите использовать.

  • Авто загрузки

Загрузите ваш класс в классе auto_load, помещенной в приложении/Config/auto_load.php

Вызов функции:

$ this-> your_class_name-> function_name (параметры);

Прочтите эти ресурсы для получения дополнительной помощи и разъяснений.

  1. https://ellislab.com/codeigniter/user-guide/libraries/loader.html
  2. https://ellislab.com/codeigniter/user-guide/general/autoloader.html
Смежные вопросы