4

これについていくつかの異なる投稿を見てきましたが、どれも私のために働いているようには見えません。

CI_Model を拡張するクラスが 1 つあります。

class Users_Model extends CI_Model {

public function __construct(){
    parent::__construct();
}

その後:

class Students_Model extends Users_Model {

private $_students;

public function __construct(){
      parent::__construct();

      $this->_students = $this->get_students();
}

ただし、次のエラー メッセージが表示されます。

PHP Fatal error:  Class 'Users_Model' not found in /Users/rosswilson/Localhost/thedrumrooms/dreamweaver/ci/application/models/students_model.php

私はrequire_once拡張クラスにファイルを含めていましたが、それは機能します。これはこれを行うためのベストプラクティス/正しい方法ですか?

ありがとう。

4

4 に答える 4

5

application/coreCI での標準的な方法は、 namedMY_Model.php内に基本モデルを作成するMY_ことです。これは、構成で定義されている内容によって異なります。

次にMY_Model.php、モデル内で拡張できるそのファイルで定義された多くのクラスを内部で使用できます。基本的に、CodeIgniter のロード モデルは、このパスとファイルで定義されたクラスを探します。

ただし、使用する場合は、で定義されている(アプリケーション パス)require_onceを使用する必要があります。ただし、カスタム モデルはCI モデルのコア クラスを使用するため、拡張する必要があります。そうしないと、モデルが機能しなくなります。APPPATHindex.phpCI_Model

require_once APPPATH.'/models/test.php';

追記:

@deanまたはそれを指摘してくれてありがとう。MY_Model.phpファイル内には、を拡張するが存在する必要があります。MY_Model classCI_Model

于 2013-06-21T10:04:36.687 に答える
1

Students_model がロードされる前に、Users_model がロードされていることを確認しましたか? これは autoload.php 設定ファイルで行うことができます。

于 2013-07-03T06:54:03.430 に答える