2012-03-13 17 views
1

私はPHPに慣れていて、次のような質問がいくつかあります。コントローラでInit関数が必要なのはなぜですか?

私はinit関数が必要ですか?(私のコードで何をしなくても)init関数が必要ですか?

NetBeansの「ちょっと」が私のプロジェクトのinit()関数を自動的に作成/追加したからです。

私のコードでは、CRUD機能を作成することを想定しています。

私が使用していない場合、私は持っているかもしれない問題と欠点を何ですか?

答えて

2

PHPを初めてお使いの方はフレームワークを使用しないでください。代わりに、言語自体を学ぶ必要があります。

init()の機能に重要なことは何もありません。 PHPのクラスでは必須ではありません。地獄..でも__construct()はPHPでは必須ではありません。

つまり、Zend Frameworkはコントローラの作成直後にZend Frameworkを実行します。 ZFを使用している場合は必須です。 詳しくはhereをご覧ください。 official docsとして

+0

私は、言語そのものとの内膜関係のすべてを持たない人々は、中核となるものを抽象化するフレームワークを使って作業することにかなり慣れ親しむことができると思います。 Zend Frameworkは、そこで最も複雑なフレームワークの1つなので、これらのケースの1つではありません。しかし、それは抽象化と高水準プログラミングのポイントの1つです。 –

+0

@drgomesp、私の経験上、それはいつもひどく終わる。 Case'n'point: "jquertプログラマー"。ネイティブのJavaScriptを習得するのに1時間も費やしていないが、専門家と考える人。そして、あなたの目が滲むようになるコードとブラウザがチョークするようなコードを作成してください。 –

+0

本当にありがとうございます。大きな皆さんのおかげで。 –

4

は言う:

init()メソッドは、主コンストラクタを拡張することを意図しています。通常、コンストラクタは単にオブジェクトの状態を設定し、多くのロジックを実行する必要はありません。これには、コントローラで使用されるリソース(モデル、構成オブジェクトなど)の初期化や、フロントコントローラ、ブートストラップ、またはレジストリから取得された値の割り当てが含まれます。

init()メソッドをオーバーライドしないコントローラを持つことはできますが、それは常にシートの下で呼び出されます。

+0

基本的に、 'init()'はメソッドです。これは、フレームワークレス環境では、ファクトリを介して要素を作成するときに実行されます。 –

0

だけのinitで初期化されるobjects..thatそのクラス(コントローラ)のためにそのコンストラクタ...変数すなわち

init(){ 
$this->a = 1; //If we set something like this in the init 
} 

public function fooAction(){ 
echo $this->a; //1 
} 
public function barAction(){ 
echo $this->a; //1 
} 

は、そのコントローラ内のすべてのアクションに利用できるようになります

1

Zend_Frameworkのinit()は、ほとんどの実用的な目的のために、そのコントローラ内のすべてのアクションに影響を与える必要があるコードを配置します(少なくともすべてのアクションに対してテストする)。
私はしばしばflashmessengerヘルパーを設定するには、私が使用したいセッションの名前空間を設定するためには、init()メソッドを使用します。例えば

public function init() { 

     if ($this->_helper->FlashMessenger->hasMessages()) { 
      $this->view->messages = $this->_helper->FlashMessenger->getMessages(); 
     } 
     //set the session namespace to property for easier access 
     $this->_session = new Zend_Session_Namespace('location'); 

    } 

またNetbeansのは、このメソッドをしませんでしたか、コントローラ、Zend_Toolはコントローラと、Netbeansが提供するインタフェースを利用するメソッドを作成しました。そのため、NetBeansのPHP設定では、ZF.batファイルへのパスを指定し、ZFインストールを変更する場合は登録プロバイダボタンをクリックする必要があります。

もう1つ...ディスパッチサイクルのさまざまな部分にフックを提供するコントローラには、さらに多くの方法が用意されています。あなたはそれらを頻繁に必要としないかもしれませんが、あなたは彼らがそこにいることを知る必要があります。

関連する問題