1

私は CodeIgniter 2 を使用しており、Ion Auth と、CodeIgniter に付属の News チュートリアルもインストールしています。

News Controllerでは、ページタイトルの要素はこのように書かれています...

$data['title'] = 'Page Title';

しかし、Ion Auth Controller では、ページタイトルの要素は、このように記述されています...

$this->data['title'] = 'Page Title';

どちらも同じようにうまく機能しているように見えるので、違いを説明できる人はいますか? Ion Auth は古いバージョンの CodeIgniter 用に書かれたのでしょうか? どちらか一方を使用したい実用的な理由はありますか? 必要に応じてソースにリンクしてください。

4

3 に答える 3

1

作者の好みだと思います。彼は、クラス プロパティを使用してビューのデータを格納することを好みます。これにより、彼はそれをメソッド間で共有できます。著者の他のプロジェクト (Source 1 , 2 , 3 ) を見ると、2 つの例 (ソース 1 と 2 が一緒になっている) を見ることができます。

Auth余談ですが、プロジェクトの場合、これにより、より多くのビューデータでコントローラー を拡張できる可能性があります。

class MY_Auth extends Auth {

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

    function index()
    {
        $this->data['foo'] = 'bar';
        parent::index();
    }
}

$fooこれにより、変数を認証ビューに使用できるようになります。(/auth/indexこの場合。)

私自身のプロジェクトでは、ビューのデータに保護されたプロパティを使用するのが好きです。ローカル変数よりもはるかに自由度が高くなります。ビューのデータを常に引数として渡す必要はなく、後でコントローラーを簡単に拡張できます。

お役に立てれば!

于 2012-12-18T01:32:52.840 に答える
1

この $this->data を使用する場合は、クラス メソッドを通じて $this->data にアクセスできることを意味します。一方、 $data を使用している場合、現在のスコープまたはメソッドでのみ使用できます。他の場所でデータが必要な場合は、それをパラメーターとして他のメソッドに渡す必要があります。

于 2012-12-18T05:04:46.960 に答える
0

データ変数に $this を追加すると、クラスからアクセスできるようになります。

$data または $this->data は「表示」にのみ使用されると思います。「コントローラー」から「ビュー」に渡されるため、「ビュー」を介してその変数にアクセスできます。

したがって、「表示」側に違いはありません。

于 2012-12-17T21:49:59.290 に答える