1

モデルとしてロードしたいいくつかのクラスがありますが、問題はそれらをいくつかのモデルに分けたいということです.今、私は次のようなクラスを持つ1つのファイルを持っています:

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));
}

インスタンスを使用すると、別のクラスから関数を簡単に呼び出すことができますか? しかし、問題は、あるモデルで別のモデルから関数を呼び出したい場合です。CI でそれを行う方法がわかりません。クラスの作成方法を示す簡単な例を作成しました。

4

2 に答える 2

4

コントローラーで行うのと同じように、それらの関数を使用するモデルで関数を呼び出したいモデルをロードすることを確認する必要があります。

このようなもの:

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

それは本当に簡単です。

于 2013-07-22T09:57:24.640 に答える
0

CI には、関数を呼び出すための 2 つの方法があります。作成するモデルが何であれ、そのクラスを使用したいそのクラスにそのモデルをロードする必要があります。

  • 手動ローディング。

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

注: 使用するクラスの上記の行を呼び出します。

  • オートローディング

application/config/auto_load.php に配置された auto_load クラスにクラスをロードします

関数の呼び出し:

$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
于 2014-12-13T05:56:53.877 に答える