Webアプリケーション情報のスクラップ集
お知らせ
2008-10-20
新着記事
PHP関連
symfony1.2でaskeet(サンプルのQ&Aサイト)を再構築する
DB関連
アプリケーションサンプル
CodeIgniterで作成した簡易プロジェクト管理システム
Links
symfonyの新しいバージョンである1.1系がベータ版になり、完成形も見えつつあります。製品版として現場で利用することはまだ先になると思いますが、どのような変更点があるのか気になります。
そこで、symfonyには1.0系のアプリケーションを1.1系にアップグレードするタスクが用意されていますので、このタスクがどこまで楽させてくれるかを見てみました。
ちなみに、1.1系の情報は
を参照するとわかりやすいです。
1. コンポーネントの変更
呼び出し方の変更に伴い書き換え
$this->sendEmail を $this->getController()->senEmail に
$this->getPresentationFor を $this->getController()->getPresentationFor に
2. 不要となる設定ファイルのお知らせ
logging.yml
i18n.yml
3.設定ファイルのアップグレード
・ProjectConfiguration.class.phpがあると自動的にアップグレードできない?
=> symfony UPGRADE fileを参照して手動でアップグレードしてね
・config.phpはもう使わない => 手を加えていたら自分で修正する必要あり
・フロントコントローラーの書き換え
ProjectConfiguration.class.phpを利用したコントローラーに変更
=> SF_APP, SF_ENVIRONMENT, SF_DEBUGを移し替えてくれる
define('SF_ROOT_DIR', realpath(dirname(__FILE__).'/..'));
define('SF_APP', '##APP_NAME##');
define('SF_ENVIRONMENT', 'prod');
define('SF_DEBUG', false);
require_once(SF_ROOT_DIR.DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.SF_APP.DIRECTORY_SEPARATOR.'
config'.DIRECTORY_SEPARATOR.'config.php');
sfContext::getInstance()->getController()->dispatch();
require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');
$configuration =
ProjectConfiguration::getApplicationConfiguration('##APP_NAME##',
'##ENVIRONMENT##', ##IS_DEBUG##);
sfContext::createInstance($configuration)->dispatch();
4.環境のアップグレード
※ syfmonyのデータディレクトリにenvironment.migratedがあれば処理しないよ。
phpファイルを総チェック
sf_cache_dir を sf_app_cache_dir
sf_root_cache_dir をsf_cache_dir
sf_base_cache_dir をsf_app_base_cache_dir
最後にenvironment.migratedファイルを作成し、重複処理対策
5. factory.ymlの更新
キャメルケースの変更
automaticCleaningFactor を automatic_cleaning_factor
cacheDir を cache_dir
prefix項目の追加
(以下yml)
automatic_cleaning_factor:
prefix: %SF_APP_DIR%
6. Flashのアップグレード
・アクションの更新
$this->setFlash を$this->getUser()->setFlash
$this->getFlash を$this->getUser()->getFlash
$this->hasFlash を$this->getUser()->hasFlash
・テンプレートの更新
$sf_flash->set を$sf_user->setFlash
$sf_flash->get を$sf_user->getFlash
$sf_flash->has を$sf_user->hasFlash
・フィルタの更新
filters.ymlにある #flash: ... を削除
7. SF_LOG_XXXX の変更
phpファイルから SF_LOG_XXX => sfLogger::XXX に書き換え
8. Propelのアップグレード
propel.iniの書き換え(プラグイン化に伴う変更)
addon.propel.builder. => plugins.sfPropelPlugin.lib.propel.builder.
propel.defaultDateFormatがなければ以下を追記
propel.defaultTimeStampFormat = Y-m-d H:i:s
propel.defaultTimeFormat = H:i:s
propel.defaultDateFormat = Y-m-d
9. Singletonの呼び出し方法変更に伴うアップグレード(sfContext経由に変更)
sfI18N::getInstance() を sfContext::getInstance()->getI18N()
sfRouting::getInstance() を sfContext::getInstance()->getRouting()
sfLogger::getInstance() を sfContext::getInstance()->getLogger()
factories.ymlにsfNoLoggerがあった場合にファイルの先頭に以下を追加-----
prod:
logger:
class: sfNoLogger
param:
level: err
loggers: ~
----
settings.ymlでlogging_enabledがなければ以下を追加
logging_enabled: off
10. Testのアップグレード
testディレクトリ/bootstrap/unit.php があり
SF_ROOT_DIR か、lib/ProjectConfiguration があれば
新しいunit.phpに置き換え
- 古いunit.php
$_test_dir = realpath(dirname(__FILE__).'/..');
define('SF_ROOT_DIR', realpath($_test_dir.'/..'));
// symfony directories
include(SF_ROOT_DIR.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php');
require_once($sf_symfony_lib_dir.'/vendor/lime/lime.php')
- 新しいunit.php
$_test_dir = realpath(dirname(__FILE__).'/..');
require_once(dirname(__FILE__).'/../../config/ProjectConfiguration.class.php');
$configuration = new ProjectConfiguration(realpath($_test_dir.'/..'));
include($configuration->getSymfonyLibDir().'/vendor/lime/lime.php');
11. viewCacheに関する変更
$viewCache->removePattern, $viewCache->clearGlob が変更されているの
でドキュメントみてね。
12. webdebugに関する変更
filters.ymlで #web_debug: ~ の箇所を 削除
自動化されていないと、とてもじゃないですが手作業でアップグレードは厳しいですね。
しかも、完全なアップグレードを行ってくれるわけではないので、
長期的な開発案件でこれからsymfonyを使う場合などでもない限り、
強引に1.1系にアップグレードする必要はないのではと思います。
投稿日:2008/04/07
前後の記事
- SimpleTestでヘッダに情報を追加する方法
- symfony1.1へアップグレードは簡単?
- CakePHPで携帯版のシステムを構築する
- CakePHPでmod_rewriteが使えない場合
- PHP5限定 CakePHPのView内の関数処理を綺麗に記述する(邪道でしょうか?)
