私は CodeIgniter を使用しており、いくつかのクラスを (モデル フォルダーに) 作成しました。
Entity
抽象クラスです(フォームになり、データベースに入るすべてのものを表すために使用されます)Login
extendsEntity
(ユーザーログインの管理に使用: ユーザー名、パスワード...)Webform
(エンティティに基づくフォームの作成に使用)
私のコントローラーにはこれがあります:
$this->load->model('login');
$myLogin = new Login(array('stuff' => 'value'));
$form = new Webform($myLogin);
私のモデルでは、Webform クラスがあります。
class Webform
{
protected $entity;
protected $fields;
public function __construct(Entity $entity)
{
$this->setEntity($entity);
}
public function setEntity(Entity $entity)
{
$this->entity = $entity;
}
}
「Webform」モデルが読み込まれるとエラーが発生しますconfig/autoload.php
(コントローラー コードが正常に動作し、ビューがこれら 3 つのエラーの下に表示されるため、少なくともそこにあると思います)。
A PHP Error was encountered
Severity: 4096
Message: Argument 1 passed to Webform::__construct() must be an instance of Entity, none given, called in (...)\system\core\Loader.php on line 303 and defined
Filename: forms/webform.php
Line Number: 8
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: entity
Filename: forms/webform.php
Line Number: 10
A PHP Error was encountered
Severity: 4096
Message: Argument 1 passed to Webform::setEntity() must be an instance of Entity, null given, called in (...)\application\models\forms\webform.php on line 10 and defined
Filename: forms/webform.php
Entity
私が見ることができる限り、CI オートロードは- があるべきだと主張しています$foo = new Webform($bar);
私が間違っていることは何ですか?ありがとう!
編集-修正済み(と思います)私はそれを手に入れたと思います-クラスをロードするCIはそれをインスタンス化するようなものでした-それをロードする代わりに、古き良きrequire_onceを実行しました。それは今働いているようです。