問題タブ [autoloader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
1965 参照

java - JavaのオートローダーのようなPHP

Javaインタープリターはオートローダー関数または彼の「クラスの検索」関数を拡張する可能性をサポートしていますか?

PHPには、spl_autoload_registerと呼ばれる関数があります(詳細については、 http: //www.php.net/manual/en/function.spl-autoload-register.phpを参照してください)。行方不明のクラスを探しています。私のコールバック関数では、期待されるクラスのファイルを含めることができます。

背景のアイデアは、ソフトウェアレイヤーを動的に切り替えたいということです。

例:
クラスx_L2がレイヤー2に存在する場合、基礎となるレイヤー1のクラスx_L1は無視する必要があります。実際、私はこの問題を一般的なミラークラスxで解決しました。これは、利用可能な最上位のレイヤーのクラスから継承する必要があります。ただし、この方法では、何百ものクラスを維持する必要がある場合にエラーが発生しやすくなります。

前もって感謝します。

0 投票する
2 に答える
162 参照

php - Cake PHP - アプリケーション用の何らかの mod の作成

私はかなり大きく成長した CakePHP で書かれた発信専用プロジェクトに取り組んでいます。このアーキテクチャは、多数のプラグインも使用します。プロジェクトの最初から、このアプリケーションのインスタンスは 1 つしかありませんでした。ただし、クライアントは、アプリケーションが機能する別の領域を見つけました。同じコードベースを使用しますが、別のデータベースを使用します。問題は、コードベースは実際には約 90% で適用できるということです。つまり、ほとんどの場合、コードベースは機能しますが、必要なわずかな変更がいくつかあります。いくつかの小さな機能強化の後、これらの変更がこの新しいインスタンスに対して継続されることは明らかです。しかし同時に、両方のインスタンスに適用される変更があります。アプリケーション全体で一連の条件を作成し、どのインスタンスが実際に実行されているかを確認するための非常にクリーンなソリューションではありません。

だから私の考えは:

  • プロジェクトを 1 つのリポジトリに保持し、1 つのコードベースのすべてのインスタンスに適用可能な変更と修正を行う
  • 必要な場合にのみ、特定のインスタンスに対してのみ、プロジェクトのデフォルト クラスをオーバーロードするクラスを含む、ある種の「mod」を作成します。
  • より明確にするために、これらの新しいクラスを含むアプリディレクトリに並列ファイル構造を持たせるのが最善です(もちろん、必要なもののみ)
  • 非常に重要なことは、ケーキのコアにまったく触れないことです。いつでも問題なくアップグレードできるようにしたいです

例:

私たちが行くときに重要なことは次のとおりです。

NewbusinessInvoicesController->generateInvoice()そのような子コントローラーとメソッドが存在するため、システムは自動的に を呼び出します。それ以外の場合は、デフォルトのコントローラーとメソッドを呼び出します。

低レベルのローディング クラスで、CakePHP 用にそのようなモードを作成することは可能ですか? 「実験的」とマークされている限り、runkit_method_redefine()たとえばメソッドを使用したり置き換えたりしたくありません。提案やアイデアはありますか?App::import()runkit_method_redefine()

0 投票する
1 に答える
556 参照

php - PHP "ヘルパー クラス" - クラスが見つかりません

PHP 5.3.2 から 5.3.3 に移行すると、コードが「I2A2」クラスを見つけられなくなるという問題が発生しています。

ここにいくつかの情報があります:

エラー: ErrorException [エラー]: クラス 'I2A2' が見つかりません

致命的なエラー: 6 行目の /var/www/html/root/sandbox/lpolicin/t6/fuel/app/classes/observer/selectcustomer.php にクラス 'I2A2' が見つかりません

$directory_listing = \I2A2::get_customer_info("puid",$customer->puid);

コード:

"classes/observer/selectcustomer.php"

「クラス/I2A2.php」

オートローダー(これは巨大な配列に挿入され、すべて自動ロードされます)...

さらに情報が必要な場合は、お知らせください。

0 投票する
3 に答える
3708 参照

ruby-on-rails-3 - Railsアプリのルートの下のフォルダーにファイルを自動ロードする方法

の下にファイルを作成しようとしていますmyapplication/somefolder。GoogleとStackoverflowは、これを追加する必要があると言っています。

私の中config/application.rbで、そうしました。

ただし、ファイルは読み込まれません。

somefolder/myclass.rb私は両方ともclass Myclassnamigを試しましclass Somefolder::Myclassたが、それでも運がありません。

Rails.application.config.autoload_pathsコンソールで見つかったディレクトリには実際に私のディレクトリが含まれていることがわかります/path/to/myapplication/somefolderので、問題ないはずです。

このトピックに関する他のすべての質問は、それが腐敗する場所を使用するtheapp/app/somefoldertheapp/lib/somefolder、そうではないかもしれません。theapp/somefolder

だから私はクラスを参照しようとしまし::Somefolder::MyClassたが、それでも役に立ちませんでした。

Rails3.2.1を使用しています

0 投票する
1 に答える
856 参照

zend-framework - Zend_AutoLoader の間違ったパス (オンラインのみ)

Zend でテストアプリを作成し、オンライン (ovh 共有サーバー上) に配置しようとしました

オフラインで (WampServer を使用して) 実行していますが、オンラインでは実行していません。解決できないエラーは次のとおりです。

これは、サーバーの www/files/project にある index.php の一部です。

.htaccess は PHP5 と UrlRewriting を有効にしますが、何もする必要はありません...

この問題を解決する方法はありますか? それはかなり明白だと思いますが、成功せずにウェブ上で見つかった多くの方法を調査しました.

ありがとう

0 投票する
1 に答える
274 参照

php - zend オートローダーで他のクラスをロードする

オートローダを使用して、Zend ディレクトリと同じディレクトリにあるクラス ファイル 'templater' を見つけるにはどうすればよいですか?

Zend フォルダーと smarty フォルダーおよびその他のクラスは、ルート ディレクトリの外にある de include フォルダーに格納しました。

私は最終的に、その場所をinclude_pathに追加することで、Zendがそのクラスを見つける方法を見つけました。

今、smarty で使用される te​​mplaterclass に行き詰まっています。

オートローダーに templaterclass を認識させ、後で smartyfolder の smarty クラスを認識させるにはどうすればよいですか?

0 投票する
2 に答える
6899 参照

annotations - cliを使用するdoctrine2autloaderは、AnnotationRegistryを使用する必要があります

\Doctrine\Common\Annotations\AnnotationRegistry::registerFileエンティティファイルの注釈レジストリにアクセスするために使用する必要があります。

この部分は、ドライバーチェーンを使用し、orm:schema-tool:creatorを使用するために必要です。しかし、を追加して必要な各クラスを追加することはできませんAnnotationRegistry::registerFile

この問題は、Doctrine2.2.2にGedmoを追加したいときに発生しました。

そして私のエンティティファイルはここにあります

エラーは:

0 投票する
2 に答える
616 参照

php - Zendオートローダー

プロジェクトのapplication/forms / *。php(この場合はLoginForm.php)の下にあるフォームを自動ロードしようとしています。

このフォームを自動的にロードするようにZendsオートローダーを構成するにはどうすればよいですか?醜い名前空間を使用したくないので、ブートストラップでフォールバックを有効にしています。application.iniで構成されたフォームに関連するものがありません

ありがとう!

0 投票する
1 に答える
683 参照

php - spl_autoload_registerを使用した自動読み込みの問題

まず、私のディレクトリ構造をお話ししたいと思います

私のindex.phpにapplication/framework.phpを含めますここに私のframework.phpコードがあります

上記のコードを使用すると、クラスの自動読み込みが正常に機能します。$ methodと$controllerは、URIに応じてindex.phpから取得されます。

今、私の友人は、これは間違った方法だと言ったので、コードを次のように変更しました

今、私はこのエラーを以下で受け取ります

どうすればこれを修正できますか?私はこれに何時間もいます。また、可能であれば、autoloadを使用してコントローラークラス内からmodelsディレクトリからモデルを呼び出す方法を教えてくださいありがとうございます

0 投票する
3 に答える
433 参照

php - PHPを使用して配列からクラスが呼び出されると、クラスを自動ロードします

私はさまざまなフレームワークとそれらがクラスの自動ロードをどのように実装するかを調べてきましたが、PHPは初めてなので、その関数を正しく解釈しているかどうかわかりません。すべてのクラスを自動ロードするためにのみ使用して独自のクラスを作成しようとしましたが、クラスにアクセスできません。私のコードは次のようになります。

ブートストラップファイルからクラスを次のようにロードします

次に、マップされたクラスの1つをインスタンス化しようとします

私が行ったことの何が問題になっていますか?これを正しく行っていますか?基本的に、autoloadクラスがブートストラップファイルからクラスの配列をマップし、呼び出された/インスタンス化されたときにファイルを含め、使用されなくなったらそれらの含めを停止するようにします。