Ethna/memo

EthnaはPHP5に正しく対応していない様子です。
以下のようなメッセージに遭遇し、対処が必要でした。

Issue1

PHP5では、newするとオブジェクトの参照が得られますが、それを =& でさらに参照で受け取ろうとするとエラーが発生します。
この場合、以下のようなメッセージがブラウザに表示されます 。

Assigning the return value of new by reference is deprecated

対処としては簡単で、エラーが発生している各所で =& となっている箇所を = にしてやるだけです。
簡単な置換作業ですが数が結構あり、根気が必要です。(楽する方法はいくつかありますが、自分で考えてみてください)

Issue2

非 static メソッドを static に呼び出すと、ワーニングが表示されるようになっています。
この場合、以下のようなメッセージがブラウザに表示されます 。

Strict Standards: Non-static method Ethna_Logger::errorLevelToLogLevel() should not be called statically in C:\xampp\php\pear\Ethna\class\Ethna_Error.php on line 28
Strict Standards: Non-static method Ethna_Controller::getInstance() should not be called statically in C:\xampp\php\pear\Ethna\class\Ethna_Error.php on line 62

私の試した環境では、上記のメッセージが5回繰り返して表示されました。

対処としては簡単で、Ethna_Logger::errorLevelToLogLevel()とEthna_Controller::getInstance()をstaticにしてやるだけです。

C:\xampp\php\PEAR\Ethna\class\Ethna_Controller.php (269行目周辺)

    *  (現在アクティブな)コントローラのインスタンスを返す
    *
    *  @access public
    *  @return object  Ethna_Controller    コントローラのインスタンス
    *  @static
    */
// function &getInstance()           // この行をコメントアウトして
   static function &getInstance()    // この行を追加
   {
       if (isset($GLOBALS['_Ethna_controller'])) {
           return $GLOBALS['_Ethna_controller'];
       } else {
           $_ret_object = null;
           return $_ret_object;

C:\xampp\php\PEAR\Ethna\class\Ethna_Logger.php (225行目周辺)

    *
    *  @access public
    *  @param  int     $errno  PHPエラーレベル
    *  @return array   ログレベル(LOG_NOTICE,...), エラーレベル表示名("E_NOTICE"...)
    *  @static
    */
// function errorLevelToLogLevel($errno)         // この行をコメントアウトして
   static function errorLevelToLogLevel($errno)  // この行を追加
   {
       switch ($errno) {
       case E_ERROR:           $code = "E_ERROR"; $level = LOG_ERR; break;
       case E_WARNING:         $code = "E_WARNING"; $level = LOG_WARNING; break;
       case E_PARSE:           $code = "E_PARSE"; $level = LOG_CRIT; break;
       case E_NOTICE:          $code = "E_NOTICE"; $level = LOG_NOTICE; break;

これらの修正後、tmpフォルダの中身をクリアする必要があります。

Issue3

時刻フォーマット(Windows上だけの問題?)

(あとで)


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-07-03 (水) 20:56:55 (1815d)