symfony 1.2以降でアプリケーション名と環境名などを取得する方法
1.0の場合はSF_APPやSF_ENVといった定数がありましたが、1.2以降では取得方法が変わっています。
<?php $context = sfContext::getInstance(); $configuration = $context->getConfiguration(); if ($configuration instanceof sfApplicationConfiguration) { // アプリケーション名 $app = $configuration->getApplication(); // 環境名 $env = $configuration->getEnvironment(); // デバッグモードかどうか $isDebug = $configuration->isDebug(); }
アクションなどの場合は$this->getContext()でコンテキストオブジェクトが取れるので、
<?php public function executeIndex(sfWebRequest $request) { $app = $this->getContext()->getConfiguration()->getApplication(); }
このようにして取得することが可能です。ただしタスクの場合、アプリケーションの指定をしない限り、コンフィギュレーションオブジェクトがsfApplicationConfigurationのインスタンスではなくsfProjectConfigurationのインスタンスになってしまいます。
その場合、個別のアプリケーションではなくプロジェクト全体を指すコンフィギュレーションになるので、当然アプリケーションや環境の取得はできません。
定数はほとんど定義しないようになったのですが、コアに関わるような定数が1つだけ定義されています。それはSYMFONY_VERSIONです。sfCoreAutoloadクラスファイルの先頭で定義されています。symfonyのバージョンをチェックしたい場合はこの定数を取得します。
sfProjectConfigurationクラスやsfApplicationConfigurationクラスはsfConfigに値を設定したりアプリケーションに関連するディレクトリの情報などを取得できるなど、様々な設定事項をここから取得可能です。困ったときはこのクラスを見てみるといいかもしれません。