Pistolfly のすべての投稿

Software Engineer in Tokyo, Japan

symfony1.0系でphp5.3でエラー発生

symfony1.0系でphp5.3でエラー発生 - chiruboの日記
symfony framework forum: symfony 1.0 => Snow Leopard - longvarchar
Creoleの問題らしい。
lib/vendor/creole/CreoleTypes.phpで、
TEXTとLONGVARCHARに同じ値(17)が代入されているため、$affixMapと$creoleTypeMapでキーが重複していて、self::LONGVARCHARが捨てられている。(PHP5.3の場合)
そのため、schema.ymlでtypeにLONGVARCHARを指定している場合に、
./symfony propel-build-modelで

Unable to return 'affix' for unknown CreoleType

が発生する。
解決法は、TEXTに使用されていない整数値を割り当てることにより、TEXTとLONGVARCHARの値が重複しないようにする。
lib/vendor/creole/CreoleTypes.php

//const TEXT = 17;
const TEXT = 30; //php 5.3.0 fix, using an unused int

その他
Is symfony-1.0 compatible with php-5.3 ? - symfony users | Google グループ

ヘルパー関数をアクション内で使う

ヘルパー関数をアクション内で使う « symfonyで開発日記
action内でhelper関数を使用したい場合は、sfLoader::loadHelpersでヘルパーをロードすればよいが、使用するヘルパーだけでなく、それが依存するヘルパーもsfLoader::loadHelpersで指定する必要がある。
たとえばアクションで、

sfLoader::loadHelpers(array('Url'));
echo mail_to('xxx@xxxx.xxx');

とやると、

Fatal error: Call to undefined function _parse_attributes() in /Users/pistolfly/sfprojects/reserve/lib/vendor/symfony/lib/helper/UrlHelper.php on line 312

というエラーになってしまう。
以下のようにすればOK。

sfLoader::loadHelpers(array('Tag', 'Url'));
echo mail_to('xxx@xxxx.xxx');