Webアプリケーション情報のスクラップ集

お知らせ

Blogサイトを公開しました

2008-10-20

新着記事

PHP関連

symfony1.2でaskeet(サンプルのQ&Aサイト)を再構築する

DB関連

MySQLでのランキング計算

アプリケーションサンプル

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

前後の記事


コメント

▲ページの先頭へ