実行時設定

php.ini の設定により動作が変化します。

Yaf 設定オプション
名前 デフォルト 変更可能 変更履歴
yaf.library   PHP_INI_ALL
yaf.action_prefer 0 PHP_INI_ALL
yaf.lowcase_path 0 PHP_INI_ALL
yaf.use_spl_autoload 0 PHP_INI_ALL
yaf.forward_limit 5 PHP_INI_ALL
yaf.name_suffix 1 PHP_INI_ALL
yaf.name_separator   PHP_INI_ALL
yaf.cache_config 0 PHP_INI_SYSTEM
yaf.environ product PHP_INI_SYSTEM
yaf.use_namespace 0 PHP_INI_ALL

以下に設定ディレクティブに関する 簡単な説明を示します。

yaf.library string

グローバルライブラリパス。Yaf_loader は グローバルライブラリをこのディレクトリから探します。

yaf.action_prefer integer

PATH_INFO の要素がひとつだけだった場合に、 それをコントローラとみなすかアクションとみなすか。

この設定を On にすると、アクション名とみなします。

yaf.lowcase_path integer

クラスのオートロード時に、すべてのパスを小文字にするかどうか。

yaf.use_spl_autoload integer

この値を On にすると、Yaf_Loader がクラスを見つけられなかったときに FALSE を返し、 その他のオートロード関数を呼べるようにします。

この値を Off にすると、Yaf_Loader がクラスを見つけられなかったときに TRUE を返し、 クラスのオートロードをそこで失敗させます。

注意:

Yaf がローダーを登録するのは Yaf_Application のインスタンスを作るときです。 なので、その前に登録されたオートローダーが呼ばれるのは Yaf_Loader::autoload() より前になります。

この値が Off (デフォルト) の場合、 Yaf_Loader::autoload() は常に TRUE を返します。

yaf.forward_limit integer

最大の転送回数で、デフォルトは 5。 つまり、最大で 5 件まで転送スタックに積めるということです。

これは、 Yaf_Controller_Abstract::forward() の再帰を防ぐための保護です。

yaf.name_suffix integer

これを On にすると、Yaf_Loader はクラスのサフィックスを見て MVC クラスかどうかを判断します。

これが Off の場合は、Yaf_Loader はクラス名のプレフィックスを見ます。

yaf.name_separator string

空の値以外を指定すると、Yaf_Loader はクラスのサフィックスを この文字列で判断します。

たとえば、この値を "_" にすると、Yaf_Loader は Index_Controller をコントローラクラスとみなし、IndexController は通常のクラスとみなします。

yaf.cache_config integer

これを On にしているときに ini ファイルを Yaf_Application() のパラメータに使うと、ini ファイルのコンパイル結果を PHP プロセスにキャッシュします。

注意:

Yaf は ini ファイルの最終更新時刻を調べ、 前回のコンパイル以降に変更があった場合は読みなおします。

警告

Yaf は ini ファイルのパスをキャッシュエントリのキーとして使います。 そのため、ini ファイルは絶対パスで指定しておきましょう。 そうしないと、もし複数のアプリケーションが 同じ相対パスに ini ファイルを持っていたときに、衝突が発生します。

yaf.environ string

デフォルト値は "product" で、Yaf が ini ファイルのどのセクションを読み込むのかを指定します。

つまり、もしこの値が "product" なら、Yaf は ini ファイルの "product" セクションを読んで Yaf_Application の最終設定をします。ini ファイルは Yaf_Application への最初の引数で指定します。

yaf.use_namespace integer

PHP 5.3 以降でだけ機能します。この値を On にすると、 Yaf のすべてのクラスが名前空間形式になります。

たとえば

Yaf_Route_Rewrite => \Yaf\Route\Rewrite
Yaf_Request_Http  => \Yaf\Request\Http
        
のようになります。ただ、 Yaf_Controller_Abstract のような例外もあります。最後の部分が PHP の予約語と同じなので、 クラス名として使うことができません。そんなクラスの場合は、次のようになります。
Yaf_Controller_Abstract => \Yaf\Controller_Abstract
Yaf_Route_Static => \Yaf\Route_Static