EthnaをPHP5.3に対応させる方法(下調べ編)

仕事で開発しているWebサイトはEthna2.3.5なので、E_STRICTやPHP5.3を使うことができない。

PHP5.1とか5.2だと、配列の操作で無名関数を使うコードを書きにくいので、foreachループばかり使ってしまう。
結果、なんとなくダサイコードになる。

いい加減モダンPHPを使いたくなってきたので、EthnaアプリをPHP5.3対応させる方法を調べてみた。

まずはEthna公式サイトの最新ニュースを見る。

Ethna 2.6.0 beta 2 リリース (2011/1/4)
beta1 に引き続き、開発版のリリースです。
beta1 のバグフィックスと、Smarty 3 用のRendererの追加をしました。

Ethna 2.6.0 beta 1 リリース (2010/12/27)
Ethna 2.5.0 から PHP 5.3 でエラーとなる機能を修正し、2.5.0 preview 5以降に変更を予定されていた機能を盛り込んだ 2.6.0 の開発バージョンをリリースします。(このため、PHP 4 に対しては後方互換性を失います)
なるほど、Ethna2.6.0にすればPHP5.3対応できるのか。

さっそく最新版をゲットしてみよう。

Ethna 2.6.0 beta 2をダウンロードして中身を見てみる

$ wget "http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fethna%2F50452%2FEthna-2.6.2011010402.tgz"
$ tar xvfz Ethna-2.6.2011010402.tgz
$ tree Ethna-2.6.2011010402
.
|-- CHANGES
|-- Ethna.php
|-- LICENSE
|-- README
|-- bin
|   |-- ethna.bat
|   |-- ethna.sh
|   |-- ethna_handle.php
|   |-- ethna_make_package.php
|   |-- ethna_make_package.sh
|   |-- ethna_run_test.php
|   `-- ethna_run_test.sh
|-- class
|   |-- Action
|   |   |-- Info.php
|   |   `-- UnitTest.php
|   |-- ActionClass.php
|   |-- ActionError.php
|   |-- ActionForm.php
|   |-- AppManager.php
|   |-- AppObject.php
|   |-- AppSQL.php
|   |-- AppSearchObject.php
|   |-- Backend.php
|   |-- CLI
|   |   `-- ActionClass.php
|   |-- CacheManager.php
|   |-- ClassFactory.php
|   |-- Config.php
|   |-- Controller.php
|   |-- DB
|   |   |-- ADOdb.php
|   |   |-- Creole.php
|   |   `-- PEAR.php
|   |-- DB.php
|   |-- Error.php
|   |-- Filter.php
|   |-- Generator.php
|   |-- Getopt.php
|   |-- Handle.php
|   |-- I18N.php
|   |-- InfoManager.php
|   |-- Logger.php
|   |-- MailSender.php
|   |-- PearWrapper.php
|   |-- Plugin
|   |   |-- Abstract.php
|   |   |-- Cachemanager
|   |   |   |-- Localfile.php
|   |   |   |-- Memcache.php
|   |   |   `-- Memcached.php
|   |   |-- Cachemanager.php
|   |   |-- Csrf
|   |   |   `-- Session.php
|   |   |-- Csrf.php
|   |   |-- Filter.php
|   |   |-- Generator
|   |   |   |-- Action.php
|   |   |   |-- ActionTest.php
|   |   |   |-- AppManager.php
|   |   |   |-- AppObject.php
|   |   |   |-- CreatePlugin.php
|   |   |   |-- EntryPoint.php
|   |   |   |-- I18n.php
|   |   |   |-- Project.php
|   |   |   |-- Template.php
|   |   |   |-- Test.php
|   |   |   |-- View.php
|   |   |   `-- ViewTest.php
|   |   |-- Generator.php
|   |   |-- Handle
|   |   |   |-- AddAction.php
|   |   |   |-- AddActionTest.php
|   |   |   |-- AddAppManager.php
|   |   |   |-- AddAppObject.php
|   |   |   |-- AddEntryPoint.php
|   |   |   |-- AddProject.php
|   |   |   |-- AddTemplate.php
|   |   |   |-- AddTest.php
|   |   |   |-- AddView.php
|   |   |   |-- AddViewTest.php
|   |   |   |-- ClearCache.php
|   |   |   |-- CreatePlugin.php
|   |   |   |-- Help.php
|   |   |   |-- I18n.php
|   |   |   |-- MakePluginPackage.php
|   |   |   `-- PearLocal.php
|   |   |-- Handle.php
|   |   |-- Logwriter
|   |   |   |-- Alertmail.php
|   |   |   |-- Default.php
|   |   |   |-- Echo.php
|   |   |   |-- File.php
|   |   |   `-- Syslog.php
|   |   |-- Logwriter.php
|   |   |-- Smarty
|   |   |   |-- block.form.php
|   |   |   |-- function.checkbox_list.php
|   |   |   |-- function.csrfid.php
|   |   |   |-- function.form_input.php
|   |   |   |-- function.form_name.php
|   |   |   |-- function.form_submit.php
|   |   |   |-- function.is_error.php
|   |   |   |-- function.message.php
|   |   |   |-- function.select.php
|   |   |   |-- function.uniqid.php
|   |   |   |-- function.url.php
|   |   |   |-- modifier.checkbox.php
|   |   |   |-- modifier.count.php
|   |   |   |-- modifier.explode.php
|   |   |   |-- modifier.filter.php
|   |   |   |-- modifier.form_value.php
|   |   |   |-- modifier.i18n.php
|   |   |   |-- modifier.join.php
|   |   |   |-- modifier.number_format.php
|   |   |   |-- modifier.select.php
|   |   |   |-- modifier.strftime.php
|   |   |   |-- modifier.truncate_i18n.php
|   |   |   |-- modifier.unique.php
|   |   |   `-- modifier.wordwrap_i18n.php
|   |   |-- Urlhandler.php
|   |   |-- Validator
|   |   |   |-- Custom.php
|   |   |   |-- File.php
|   |   |   |-- Max.php
|   |   |   |-- Mbregexp.php
|   |   |   |-- Mbstrmax.php
|   |   |   |-- Mbstrmin.php
|   |   |   |-- Min.php
|   |   |   |-- Regexp.php
|   |   |   |-- Required.php
|   |   |   |-- Strmax.php
|   |   |   |-- Strmaxcompat.php
|   |   |   |-- Strmin.php
|   |   |   |-- Strmincompat.php
|   |   |   `-- Type.php
|   |   `-- Validator.php
|   |-- Plugin.php
|   |-- Renderer
|   |   |-- Rhaco.php
|   |   |-- Smarty.php
|   |   `-- Smarty3.php
|   |-- Renderer.php
|   |-- SOAP
|   |   |-- ActionForm.php
|   |   |-- Gateway.php
|   |   |-- GatewayGenerator.php
|   |   |-- Util.php
|   |   `-- WsdlGenerator.php
|   |-- Session.php
|   |-- UnitTestCase.php
|   |-- UnitTestManager.php
|   |-- UnitTestReporter.php
|   |-- UrlHandler.php
|   |-- Util.php
|   |-- View
|   |   |-- 403.php
|   |   |-- 404.php
|   |   |-- 500.php
|   |   |-- Info.php
|   |   |-- Json.php
|   |   |-- List.php
|   |   |-- Redirect.php
|   |   `-- UnitTest.php
|   `-- ViewClass.php
|-- extlib
|   `-- Plugin
|       |-- Filter
|       |   `-- Debugtoolbar.php
|       `-- Logwriter
|           `-- Debugtoolbar.php
|-- misc
|   `-- ethna_zsh_config
|-- skel
|   |-- app.action.default.php
|   |-- app.actionclass.php
|   |-- app.actionform.php
|   |-- app.controller.php
|   |-- app.error.php
|   |-- app.plugin.filter.default.php
|   |-- app.unittest.php
|   |-- app.url_handler.php
|   |-- app.view.default.php
|   |-- app.viewclass.php
|   |-- dot.ethna
|   |-- etc.ini.php
|   |-- locale
|   |   |-- ethna_sysmsg.default.ini
|   |   |-- ja_JP
|   |   |   `-- ethna_sysmsg.ini
|   |   |-- skel.msg.ini
|   |   `-- skel.msg.po
|   |-- plugin
|   |   |-- skel.plugin.f.php
|   |   |-- skel.plugin.ini
|   |   |-- skel.plugin.sb.php
|   |   |-- skel.plugin.sf.php
|   |   |-- skel.plugin.sm.php
|   |   `-- skel.plugin.v.php
|   |-- skel.action.php
|   |-- skel.action_cli.php
|   |-- skel.action_test.php
|   |-- skel.action_xmlrpc.php
|   |-- skel.app_manager.php
|   |-- skel.app_object.php
|   |-- skel.entry_cli.php
|   |-- skel.entry_www.php
|   |-- skel.template.tpl
|   |-- skel.test.php
|   |-- skel.view.php
|   |-- skel.view_test.php
|   |-- template.403.tpl
|   |-- template.404.tpl
|   |-- template.500.tpl
|   |-- template.index.tpl
|   |-- template.layout.tpl
|   |-- www.css.ethna.css
|   |-- www.htaccess
|   |-- www.index.php
|   |-- www.info.php
|   |-- www.unittest.php
|   `-- www.xmlrpc.php
|-- test
|   |-- ActionError_Test.php
|   |-- ActionForm_Filter_Test.php
|   |-- ActionForm_FormTemplate_Test.php
|   |-- ActionForm_MultiArray_Test.php
|   |-- ActionForm_Test.php
|   |-- ActionForm_Validator_Custom_Test.php
|   |-- ActionForm_Validator_Max_Test.php
|   |-- ActionForm_Validator_Mbregexp_Test.php
|   |-- ActionForm_Validator_Mbstrmax_Test.php
|   |-- ActionForm_Validator_Mbstrmin_Test.php
|   |-- ActionForm_Validator_Min_Test.php
|   |-- ActionForm_Validator_Regexp_Test.php
|   |-- ActionForm_Validator_Required_Test.php
|   |-- ActionForm_Validator_Strmax_Test.php
|   |-- ActionForm_Validator_Strmaxcompat_Test.php
|   |-- ActionForm_Validator_Strmin_Test.php
|   |-- ActionForm_Validator_Strmincompat_Test.php
|   |-- ActionForm_Validator_Type_Test.php
|   |-- ClassFactory_Test.php
|   |-- Class_Test.php
|   |-- Config_Test.php
|   |-- Controller_Test.php
|   |-- Error_Test.php
|   |-- Getopt_Test.php
|   |-- I18N_Test.php
|   |-- Logger_Test.php
|   |-- MockProject.php
|   |-- MocktestManager.php
|   |-- Plugin
|   |   |-- Abstract
|   |   |   `-- Plugin_Abstract_Test.php
|   |   |-- Cachemanager
|   |   |   |-- Plugin_Cachemanager_Localfile_Test.php
|   |   |   `-- Plugin_Cachemanager_Memcache_Test.php
|   |   |-- Csrf
|   |   |   `-- Plugin_Csrf_Session_Test.php
|   |   |-- Handle
|   |   |   |-- Plugin_Handle_AddTemplate_Test.php
|   |   |   |-- Plugin_Handle_I18n_Test.php
|   |   |   `-- Plugin_Handle_PearLocal_Test.php
|   |   |-- Logwriter
|   |   |   |-- Plugin_Logwriter_Echo_Test.php
|   |   |   `-- Plugin_Logwriter_File_Test.php
|   |   |-- Smarty
|   |   |   |-- Plugin_Smarty_function_select_Test.php
|   |   |   |-- Plugin_Smarty_modifier_checkbox_Test.php
|   |   |   |-- Plugin_Smarty_modifier_explode_Test.php
|   |   |   |-- Plugin_Smarty_modifier_select_Test.php
|   |   |   |-- Plugin_Smarty_modifier_unique_Test.php
|   |   |   `-- Plugin_Smarty_modifier_wordwrap_i18n_Test.php
|   |   `-- Validator
|   |       |-- Plugin_Validator_Custom_Test.php
|   |       |-- Plugin_Validator_Max_Test.php
|   |       |-- Plugin_Validator_Mbregexp_Test.php
|   |       |-- Plugin_Validator_Mbstrmax_Test.php
|   |       |-- Plugin_Validator_Mbstrmin_Test.php
|   |       |-- Plugin_Validator_Min_Test.php
|   |       |-- Plugin_Validator_Regexp_Test.php
|   |       |-- Plugin_Validator_Required_Test.php
|   |       |-- Plugin_Validator_Strmax_Test.php
|   |       |-- Plugin_Validator_Strmaxcompat_Test.php
|   |       |-- Plugin_Validator_Strmin_Test.php
|   |       |-- Plugin_Validator_Strmincompat_Test.php
|   |       `-- Plugin_Validator_Type_Test.php
|   |-- Plugin_Test.php
|   |-- Session_Test.php
|   |-- TextDetailReporter.php
|   |-- UnitTestBase.php
|   |-- UrlHandler_Test.php
|   |-- Util_Test.php
|   |-- View
|   |   |-- View_404_Test.php
|   |   |-- View_500_Test.php
|   |   |-- View_Json_Test.php
|   |   `-- View_Redirect_Test.php
|   |-- ViewClass_FormHelper_Test.php
|   |-- ViewClass_Test.php
|   |-- run_test.stdin.txt
|   |-- skel
|   |   |-- app.controller.php
|   |   |-- skel.action.404.php
|   |   |-- skel.action.500.php
|   |   |-- skel.action.formhelper.php
|   |   |-- skel.action.i18ntest.php
|   |   |-- skel.action.json.php
|   |   |-- skel.action.pluginpreload.php
|   |   |-- skel.action.redirect.php
|   |   |-- skel.view.i18ntest.php
|   |   `-- template
|   |       |-- skel.template.blockform.tpl
|   |       |-- skel.template.i18ntest.tpl
|   |       |-- skel.template.text.tpl
|   |       `-- skel.template.textarea.tpl
|   `-- test_message_catalog.ini
`-- tpl
    |-- info.tpl
    `-- unittest.tpl

38 directories, 282 files

ぱっとみた感じ、Ethnaコアのクラスファイルから"Ethna_"の接頭辞がなくなっているのが一番大きな変化だろうか。
(例:Ethna_ActionForm.php → ActionForm.php)

これから、Ethna2.3.5をEthna2.6.0にアップグレードする長い旅が始まりそうだ。

カテゴリ: