Bug(バグ) #1609
完了
Zend_Loader::registerAutoload()がdeprecatedで警告メッセージが出る
Hidenori Goto さんが約14年前に追加.
約9年前に更新.
説明
警告メッセージ詳細¶
Notice: Zend_Loader::Zend_Loader::registerAutoload is deprecated as of 1.8.0 and will be removed with 2.0.0; use Zend_Loader_Autoloader instead in ****\OpenPNE3\lib\vendor\Zend\Loader.php on line 266
使用箇所¶
- lib/config/opApplicationConfigration.class.php registerZend()
- lib/config/opApplicationConfigration.class.php unregisterZend()
- lib/util/opMailSend.class.php execute()
修正案¶
Zend_Loader::registerAutoload()をOpenPNE側で用意する自前のスタティックメソッドで置き換える。
コード例は添付参照。
ファイル
関連するチケット
1 (0件未完了 — 1件完了)
- 優先度 を Normal(通常) から High(高め) に変更
- 対象バージョン を OpenPNE 3.7.0 にセット
- 担当者 を Maki Takahashi にセット
- ステータス を New(新規) から Accepted(着手) に変更
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
d47a8fc6bd8caedbf2db1dbd4a772bdc62813fd9 にて対応しました。
devモードにて、招待メール送信時に警告メッセージが表示されないことを確認しています。
stable-3.6.xに含まれるZendFramework1.7.3PL1には、
置き換えるべきZend_Loader_Autoloaderが無いため(1.8以降からある)
ライブラリをバージョンアップしなければ対応不要
(Zend_Loader_Autoloaderが無いためエラーになってしまう)のようです。
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
元々のコードで、opMailSend::execute() から Zend_Loader::registerAutoLoad() が直接呼ばれているのは間違いで、opApplicationConfiguration::unregisterZend() を使うべきだと思います。
opApplicationConfiguration の registerZend(), unregisterZend() の2箇所だけであれば、以下のように直接 Zend_Loader_Autoloader を使ってもそれほど複雑なコードにはならないので独自の Loader を作成するほどでもないかなと思います。
--- a/lib/config/opApplicationConfiguration.class.php
+++ b/lib/config/opApplicationConfiguration.class.php
@@ -504,7 +504,8 @@ abstract class opApplicationConfiguration extends sfApplicationConfiguration
set_include_path($zendPath.PATH_SEPARATOR.get_include_path());
- opZendLoader::registerAutoLoad();
+ require_once 'Zend/Loader/Autoloader.php';
+ Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);
self::$zendLoaded = true;
}
@@ -515,7 +516,8 @@ abstract class opApplicationConfiguration extends sfApplicationConfiguration
return true;
}
- opZendLoader::registerAutoload('Zend_Loader', false);
+ Zend_Loader_Autoloader::resetInstance();
+ spl_autoload_unregister(array('Zend_Loader_Autoloader', 'autoload'));
self::$zendLoaded = false;
}
- トラッカー を Enhancement(機能追加・改善) から Bug(バグ) に変更
- 3.6 で発生するか を Yes にセット
- ステータス を Rejected(差し戻し) から Accepted(着手) に変更
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
- 3.6 で発生するか を Yes から Unknown (未調査) に変更
- 3.4 で発生するか を Unknown (未調査) にセット
- 3.8 で発生するか を Unknown (未調査) にセット
他の形式にエクスポート: Atom
PDF