0

私は CodeIgniter を使用しており、いくつかのクラスを (モデル フォルダーに) 作成しました。

  • Entity抽象クラスです(フォームになり、データベースに入るすべてのものを表すために使用されます)

  • Loginextends Entity(ユーザーログインの管理に使用: ユーザー名、パスワード...)

  • 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を実行しました。それは今働いているようです。

4

0 に答える 0