Ticket #1637 (closed 改善提案: 修正済)

Opened 9 years ago

Last modified 9 years ago

クラスのオートローディング

Reported by: Seasoft Owned by: Seasoft
Priority: Milestone: EC-CUBE2.12.0
Component: その他 Version: 2.11.4
Keywords: Cc:
修正済み: yes

Description (last modified by Seasoft) (diff)

  • 速度改善を望める。(クリーンインストール直後のTOPページで10%以上の削減か)
    • 必要なファイルのみ読み込む。
    • 比較的コストの高い require_once を require に変更する。
  • PHP のメモリー使用量を軽減できる。
  • インクルード用ファイルが不要となる。
  • 各クラス内での require_once の記述が不要となる。
  • ファイルパス命名規則の正規化を期待できる。
    • 既に崩れているという問題を抱えている。とりあえずクラスローダー内で変換してカバーする。将来的には、PEAR のように適切な命名への改善が必要。
  • ML(コミュニティサイトだったかも)で話題になった、決済モジュールと EC-CUBE 本体でのクラス名衝突の問題を軽減する効果も期待できるか。
    • 使いたいバージョンを読み込んでいなかったというケースも考えられるので、やはり決済モジュール側では、クラス名を変更しておくといった対応が望ましいのは従来と変わらない。

r21483

対応すべき PHP のバージョンが明らかではないため __autoload() で実装したが、PHP 5.1.1 以下を考慮しなくて良いならば、spl_autoload_register() で実装するのが望ましいとは思う。

Change History

comment:1 Changed 9 years ago by Seasoft

  • Owner changed from somebody to Seasoft
  • 修正済み set
  • Status changed from new to assigned
  • Description modified (diff)
  • Summary changed from クラスローダー to クラスのオートローディング

comment:2 follow-up: ↓ 3 Changed 9 years ago by kajiwara

  • 修正済み unset

Seasoftさん

本件、ご対応ありがとうございます。

システム要件の公開が不十分で申し訳ございません。

2.12.0からはPHPは5.1.6以降 がシステム要件になります。ですので、5.1.1は考慮していただく必要はありません。

修正が可能でしたら修正お願いします。

comment:3 in reply to: ↑ 2 Changed 9 years ago by Seasoft

たしか、プラグイン関連の実装の際に AMUAMU 様のコミットだったと思いますが、SPL での登録に変更していたと思います。

なお、PHP 5.1.6~5.2.x では、SPL モジュール (さらに simplexml に依存) を有効にしておく必要があります。(ラピッドサイトなど NTT/VERIO プラットフォームの VPS では、初期で無効になっていたと記憶しています。)

comment:4 Changed 9 years ago by kajiwara

  • Status changed from assigned to closed
  • 修正済み set
  • Resolution set to 修正済

ご確認ありがとうございます。

それでは、こちらのチケットに関してはクローズとさせていただきます。

Note: See TracTickets for help on using tickets.