2011-02-02 6 views
2

私は過去にcodeigniterを使用しましたが、現在のプロジェクトではKohanaに切り替わります。定数に関するベストプラクティスは何ですか?Kohanaの定数

codeigniterには実際のconstants.phpがありますが、Kohanaのソースを経由すると、私は何か似たようなことはしません。

+0

どのような種類のデータを定数に保存しますか? – zerkms

+0

kohanaはもはやCIに関係しません。 – yoda

+0

今、テンプレート用のもの。フレンドリーなサイト名のようなものではありません。 – ws0x9

答えて

2

kohanaは使用しませんでしたが、すばやいグーグルの後には、config APIを使用して必要な定数を格納する独自の設定を作成することができます。

This threadは、データベースに依存する項目を格納する場合は、database.php configなどに配置することを提案しています。

+0

ちょうどwikiがkohana v2に関連していることに気付きたい。 – zerkms

+0

正しい方向のポイントをありがとう。まだ彼らのドキュメントに慣れています。 – ws0x9

+2

kohana v3.x userguide(正式ではありませんが公式よりも完全です):http://michaeldpeters.com/userguide/guide – yoda

1

私はKohanaに精通していますが、CIはあまりよく分かりません。したがって、私はあなたが「定数」を意味するものを少し推測しています。私はこれに最も近いことは確かにKohanaのconfig APIです。ですから、あなたのサイト名のようなサイト全体の定数をテンプレートに認識させたいのであれば、config APIを使うのは素晴らしいことです。

これを達成するには、/ configフォルダ(おそらく/ applicationディレクトリ)にconfigファイルを作成する必要があります。あなたが呼んでいることはあまり重要ではありませんが、サイト情報が含まれているので、site.phpと呼ぶことにしましょう。

A:今

<?php defined('SYSPATH') or die('No direct script access.'); 

return array(
    // Your site name! 
    'name' => 'Oh me, Oh my', 
); 

は、あなたのような何かをすることによって、テンプレートにして、これを持って来ることができます。

はすぐにここにあなたがそのファイルを持っているしたいと思うものです、軌道に乗るために、これを行うより良い方法は(ダムテンプレートを使用して)これをコントローラのテンプレート変数として割り当てることです。

public function action_index() { 

    $this->template->site_name = Kohana::config('site.name'); 

} 

をそしてあなたのテンプレートはこのような何かを持っているでしょう::だから、あなたが設定し、いくつかのデフォルトのコントローラを持っていると仮定すると、コードは次のようになり

<title><?php echo $site_name; ?></title> 

それは階層的であるためのKohanaのconfig APIが面白いです、つまり、既存の設定構造の上に新しい設定値を上書きしてマージすることができます。 Kohana::config('site.name')を呼び出すと、エンジンはsite.phpという名前のすべての設定ファイルを調べ、それらの設定ファイルをすべて実行し、結果を配列にマージします。アプリケーションレベルの設定ファイルはモジュールを上書きし、システムなどを上書きします。次に、その結​​果配列に基づいて、Kohanaは '名前'キーを見つけて返します。

0

グローバル定数が必要であると仮定します。以下がうまくいきました。

アプリケーション/設定/ constants.php:

define('MY_COOL_CONSTANT', 'foo'); 
return array(); 

のindex.php:

Kohana::$config->load('constants'); 

MY_COOL_CONSTANTは、世界的に利用可能であるべきです。