Bug(バグ) #1609
完了Zend_Loader::registerAutoload()がdeprecatedで警告メッセージが出る
100%
説明
警告メッセージ詳細¶
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側で用意する自前のスタティックメソッドで置き換える。
コード例は添付参照。
ファイル
Mutsumi Imamura さんが13年以上前に更新
- 優先度 を Normal(通常) から High(高め) に変更
- 対象バージョン を OpenPNE 3.7.0 にセット
Maki Takahashi さんが13年以上前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
d47a8fc6bd8caedbf2db1dbd4a772bdc62813fd9 にて対応しました。
devモードにて、招待メール送信時に警告メッセージが表示されないことを確認しています。
stable-3.6.xに含まれるZendFramework1.7.3PL1には、
置き換えるべきZend_Loader_Autoloaderが無いため(1.8以降からある)
ライブラリをバージョンアップしなければ対応不要
(Zend_Loader_Autoloaderが無いためエラーになってしまう)のようです。
Rimpei Ogawa さんが13年以上前に更新
- ステータス を 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; }
Shingo Yamada さんが13年以上前に更新
- トラッカー を Enhancement(機能追加・改善) から Bug(バグ) に変更
- 3.6 で発生するか を Yes にセット
Maki Takahashi さんが13年以上前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
フィードバックに従い
1620132b6a50069c68ed3cda4e25264773b6d527 にて
opApplicationConfigurationのregisterZend(), unregisterZend()内でZend_Loader_Autoloaderを使うように修正しました。
Rimpei Ogawa さんが13年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
修正確認しました。
Yuma Sakata さんが12年以上前に更新
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
- 3.6 で発生するか を Yes から Unknown (未調査) に変更
- 3.4 で発生するか を Unknown (未調査) にセット
テストOKです。