Kohana 3用の簡単なモジュールを書く方法は?

PHPフレームワークでの作業の基本を理解する過程で、3番目のバージョンであるKohanaは、このフレームワーク用のモジュールの作成方法がすぐには理解されなかったという事実に直面しました。 フレームワークの操作経験があまりないため、すべてが直感的に見えるわけではありません。

デフォルトのインストールで利用可能なモジュールの研究は助けになりましたが、とにかく大したことではありませんでした。



したがって、モジュールの作成に関するメモを書くことにしました。 突然誰かが便利になります。







それでは始めましょう。



Ko3のモジュールの基本的なディレクトリ構造は次のようになります。



 module_name
 |
 | --classes
 |
 | --config
 |
  -ビュー




クラスディレクトリには、モジュールが機能するために必要なクラスが含まれることは論理的です。 configディレクトリには、それぞれモジュール構成ファイルがあります。 さて、 ビューディレクトリで-表示テンプレート。



例として、簡単なモジュールを作成します。 あまり実用的ではないかもしれませんが、私たちにとっての主なことは仕事の原則を理解することです。



ヘッダー出力モジュールを書きましょう。 文字列をデータとして転送し、出力で何らかの形式で発行されることを期待します。



モジュールディレクトリにテスターディレクトリを作成します。これはモジュールの名前になります。 その中で、 クラス、構成、ビューのディレクトリを作成します



構成ストアのモジュールを見てみましょう:

-タイトルを表示するフォントサイズ。

タイトルの色



次の内容で、configディレクトリにtester.phpファイルを作成します(Ko3のデフォルトモジュールの例を使用して、ファイル名をモジュール名と同じにします)。



<?php



return array(



'default' => array(

'size' => '20' ,

'color' => '#ff0000' ,

'view' => 'tester/view.php' ,

),



);












view要素で、ヘッダーの出力テンプレートを指定します。 そしてもちろん、このテンプレートをモジュールのビューディレクトリに作成する必要があります。 次のようになります。



 | --views
    |
     -テスター
       |
        --view.php




テンプレートの内容は簡単です:



<div style="clear: both; font-weight: bold;">

<font style="color: <?php echo $fontColor ?> ; font-size: <?php echo $fontSize ?> pt;"> <?php echo $text ?> </font>

</div>










そして今、私たちは実際にクラスの作成に移り、これがすべてを作成します。 classesディレクトリで、次の内容を持つtester.phpファイル(はい、まったく同じ名前)を作成します。



<?php



class Tester

{

// font size of our header

protected $fontSize ;



// color of our header

protected $fontColor ;



// text of our header

protected $text ;



// merged configuration settings

protected $config = array();







public static function
factory ( $text )

{

return new
Tester ( $text );

}





public function
__construct ( $text )

{

// Load config file

$config_file = Kohana :: config ( 'tester' );

$this -> config = $config_file -> default ;



$this -> fontColor = $this -> config [ 'fontColor' ];

$this -> fontSize = $this -> config [ 'fontSize' ];

$this -> text = $text ;

}





public function
render ()

{

// Load the view file and pass on the whole Pagination object

return View :: factory ( $this -> config [ 'view' ], get_object_vars ( $this ))-> render ();

}



}













コンストラクターに注意してください。コンストラクターに構成ファイルが読み込まれ、ヘッダーを表示するために必要なオブジェクトのプロパティが設定されます。

次のように、テンプレートでヘッダーを直接処理します。



<?php echo Tester :: factory ( 'New Module Header' )-> render (); ?>











ここで、 bootstrap.phpファイルでモジュールを接続する必要があります

開いて、次のセクションを見つけます。



Kohana :: modules (array(

// 'auth' => MODPATH.'auth', // Basic authentication

// 'codebench' => MODPATH.'codebench', // Benchmarking tool

// 'database' => MODPATH.'database', // Database access

// 'image' => MODPATH.'image', // Image manipulation

// 'orm' => MODPATH.'orm', // Object Relationship Mapping

// 'pagination' => MODPATH.'pagination', // Paging of results

// 'userguide' => MODPATH.'userguide', // User guide and API documentation

));











このリストにモジュールの行を追加します:



Kohana :: modules (array(

// 'auth' => MODPATH.'auth', // Basic authentication

// 'codebench' => MODPATH.'codebench', // Benchmarking tool

// 'database' => MODPATH.'database', // Database access

// 'image' => MODPATH.'image', // Image manipulation

// 'orm' => MODPATH.'orm', // Object Relationship Mapping

// 'pagination' => MODPATH.'pagination', // Paging of results

// 'userguide' => MODPATH.'userguide', // User guide and API documentation

'tester' => MODPATH . 'tester' ,

));












モジュールの最終的なディレクトリ構造:



 テスター
 |
 | --classes
 |  |
 |  --tester.php //モジュールのクラス
 |
 | --config
 |  |
 |  --tester.php //設定ファイル
 |
  -ビュー
     |
      -テスター
         |
          --view.php //表示テンプレート 




bootstrap.phpにモジュールを登録した後、テンプレートで新しいヘッダーを使用できます。



当然、この機能は、第一に非常に制限され、第二に、 HTMLヘルパークラスにメソッドを記述する方が簡単で論理的です。 しかし、それでも、モジュールを編成する原則は理解できると思います。



クエリ文字列のコントローラーとして機能できるモジュールが必要な場合(たとえば、 サイト/モジュール/メソッド/ param1 / param2をクエリすると結果が生成されます)、最初にクラスのディレクトリにコントローラーサブディレクトリを作成し、その中にファイルを作成する必要がありますコントローラーのクラスで。 次に、 bootstrap.phpファイルでモジュールを接続するだけでなく、ルートセクションでルートを指定して、モジュールを指すURLを処理する必要があります。



All Articles