問題タブ [autoload]
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.
php - __autoload の失敗 - Joomla との競合
__autoload を使用するようにすべてのコードを変更して、それが joomla オートローダーと競合することを確認しました。場合によっては、アプリを joomla と統合してユーザーを登録します。
明らかに多くのオートローダーを許可する spl_autoload_register() を見つけました。
私は何をすべきか?
更新:これはjoomlaが行うことです
/library/loader.php からこのファイルを読み込みます
更新 2:
OK、呼び出した Joomla ライブラリをロードした直後
これは私のオートロードがどのように見えるかです:
私が最初に呼び出され、1 秒後に joomla が呼び出されますが、アプリはまだ Joomla クラスを見つけることができません。
更新 3:
実行後:
と
私の出力は次のとおりです。 PRE: myAutoload: POST: myAutoload:Array
更新 4:
Joomla のインポートを次のように変更する必要がありました。
ここに出力があります
これらのJoomlaファイルを含めた後、私はそれを解決しました
spl_autoload_functions() は何も返さないため、どういうわけか joomla が詰め込んでいます。
php - Zend Framework: 別のディレクトリからモジュールをロードする
皆さん、これはスタック オーバーフローに関する最初の質問です。このウェブサイトは私を大いに助けてくれると思ったので、私も試してみます.
私は現在、共通のモジュール ディレクトリからモジュールを継承する必要がある複数の Zend Framework アプリケーションに取り組んでいます。使用されるファイル構造は従来の方法です (アプリケーション構造を保護するために実際の名前と参照は省略されています)。
今のところ、次のように Application2 のブートストラップですべてのモジュールを手動でオートロードしようとしました:
これは機能しますが、ご想像のとおり、これは非常に退屈な作業になります。今、私は FrontController の共通モジュールディレクトリを次のように設定しようとしました:
しかし、これはどのモジュールもブートストラップしていないようです。私は何か重要なことを忘れていますか?あなたの助けは大歓迎です!
php - PHP名前空間:関数の読み込み
PHPの関数型プログラミングで少し遊んでみたいと思います。いつもphpでoopを書くときは、何か違うことを試してみるのは面白いと思います。
ただし、名前空間を使用したいと思います。私の名前空間はファイル構造と同じです:
名前空間my\Models \ User;
/my/Models/User.php
このための自動読み込みのようなことをする彼らの方法です。useとrequire_onceの両方を記述しなければならないということですか?
よろしく、セバスチャン
php - Textmate を取得して、ファイルパスから PHP 自動ロード クラス名を作成する
私が望むのは、実行時に TM_FILEPATH 出力を取得するスニペットです スラッシュで展開します / 次に、各部分をその部分とアンダースコアを含むプレースホルダーとして分割します (最後の部分 (ファイル名) を除く) 例: for取得するディレクトリ パス /Path/To/Original/file 内のファイル
次に、標準の PHP オートローダーに適合する className で終わってほしくない部分をステップ実行して削除できます。
これは可能ですか?
乾杯、クリス
ruby-on-rails-3 - Rails 3: /lib にファイルをロードする方法は?
私はレールに不慣れで、ある種の初心者の間違いを犯しています。ファイル内の行数を頻繁にカウントする必要があるため、次のようにクラス ファイルにパッチを適用しようとしています。
これを /lib/file_util.rb に保存しました。これは自動的に必要になるはずなので、そのまま使用できると思っていましたが、うまくいきません:
だから私はそれを手動で要求しようとしますが、喜びはありません:
しかし、IRB 内で必要な場合は機能します。
また、require を config/application.rb に追加しようとしました。
そして私は得る:
私は何を間違っていますか?
php - PHPの自動読み込み:'の防止は再宣言できません'すべての星座で?
質問
PHPに致命的なエラーを発生させるのではなく、クラスの再宣言を無視させる方法はありますか?または、少なくとも例外をスローしますか?(私はそれを簡単にキャッチして続行することができました(また、試行された自動ロードのログも記録します)。)
私はノーだと思います、そして致命的なエラーは致命的なエラーです-結局のところ、100のケースのうち99で、それは合理的に賢明な振る舞いです-そして私はおそらくそれがケースでトリガーされるインスタンスを修正する必要があります-ケースバイケース。しかし、多分私より賢い誰かがこれを理解しました。
「いったいなぜそんなことをしたいのか」と自問しているのなら、読み続けてください。
バックグラウンド
私は、Reflectionを使用して、使用されている関数とクラスに関する特定の情報を集約するツールに取り組んでいます。スクリプトの引数の1つは、自動ロードでReflectionの信頼性を高めるためのオプションのブートストラップファイルです(ReflectionExceptions
特定のファイルではクラスが不明であるため、キャッチされてフォールバックヒューリスティックがトリガーされることはありません)。
これで、ブートストラップはオートローダーを正常にロードし、スクリプトは意図したとおりに実行され、問題が発生するまで、何百ものファイルを文句なしに移動します。
PHPの致命的なエラー:62行目の/usr/share/php/PHPUnit/Framework/Constraint.phpでクラスPHPUnit_Framework_Constraintを再宣言できません
私には2つの問題があります:
1つは、何がこれを引き起こしているのかわかりません。使用するブートストラップを調整しましたが、使用するインクルードパスに応じて、「再宣言できません」と「ファイルを開けませんでした」が交互に表示されます。妥協点はありません。つまり、エラーが発生しないポイントはありません。それでも、私はまだ調査中です。(ただし、この問題は質問の内容ではありません。)
2つ、さらに重要なことに、この質問の主題につながるので、私はそれを捕まえる方法が必要です。カスタムエラーハンドラを作成しようとしましたが、sに対しては機能したくないようですFatal error
(ある程度賢明なことに、議論の余地があるかもしれません)。
私はこのツールをいつかオープンソースの世界にリリースするつもりですが、これは非常に容認できない振る舞いとして私を襲います。存在しないクラスのフォールバックヒューリスティックがあります-ヒューリスティックを過度に使用せずに、一度はあまり頻繁に宣言されるのではなく、一度宣言されることをお勧めします。つまり、ブートストラッパーを使用する機能。スクリプトを壊すことなく。これまで。オートローダーの歴史の中で最悪のオートローダーだとしても。
(強調するために:オートローダーの助けは必要ありません。それはこの質問の内容ではありません。)
zend-framework - zend フレームワークには、アクション コントローラーに別のクラスが含まれます
私は zend フレームワークの初心者です。
簡単な質問:
私の IndexController ファイルで、新しいクラスをインスタンス化したい。
クラス宣言のファイルは/library以下に置きます
そしてもちろんインクルードパス(index.php)にあります
エラーが発生します:
このクラスを自動ロードする方法は何ですか?
ありがとう!
php - require_once問題
私はこのコードを__constructorに持っています
問題:予期しない奇妙なエラーが発生しました:
「__autoload」メソッドを使用して必要なクラスを呼び出していますが、ModalBOXウィンドウでファイルを呼び出すと機能しません。ModalBoxの外部でファイルをリクエストすると、evrythingはうまくいきます:(
それを修正するためのいくつかのトリック?
事前にどうもありがとうございました!
PS
これは__autoloadメソッドです:
それ以外の場合はfalseを返します。}
php - PHP __autoload() は、同じクラスの別の __autoload() 内からクラスをロードできますか?
わかりました、これは難しい問題です... 答えは単純にノーだと思いますが、その場合、代替案についていくつかの答えが欲しいです.
クラスを動的に作成できるフレームワークに非常に複雑な __autoload() 関数があります。AuthActions と呼ばれるクラスを動的に作成するには、fRecordSet、RecordSet、および AuthAction の 3 つのクラスが必要です (このクラスには S がないことに注意してください)。
私のオートローダーは、ロードしたクラスで静的メソッド「init」を探し、それを実行しようとします。私の ActiveRecord クラスでは、特定のアクティブ レコードでサポートされているアクションのリストを取得するために、AuthActions を使用しようとします。AuthAction (S なし) もその init 内で AuthActions を呼び出すため、基本的にアクティブ レコードが読み込まれ、AuthActions の読み込みを試み、他の 3 つの読み込みをトリガーします。その後、AuthAction の読み込みが終了すると、元のオートローダー内で AuthAction が呼び出しを試みます。元のオートロードがまだ完了していないため、別のオートロードをトリガーする AuthActions。
これにより、明確にするためにいくつかのエコーステートメントを含む以下が発生します。
ActiveRecord をロード
しようとしています fActiveRecord をロードしようとしています /var/www/dotink.org/inkwelldemo/inc/lib/flourish 経由でロードされた fActiveRecord
/var/www/dotink.org/inkwelldemo/inc/lib 経由でロードされた
ActiveRecordをロード
しようとしています AuthActions をロード
しようとしていますload RecordSet fRecordSetの読み込みを
試みています /var/www/dotink.org/inkwelldemo/inc/lib/flourish RecordSetを /var/www/dotink.org/inkwelldemo/inc/lib 経由
で 読み込みましたvar/www/dotink.org/inkwelldemo/models致命的なエラー: 24 行目の /var/www/dotink.org/inkwelldemo/models/AuthAction.php にクラス 'AuthActions' が見つかりません
ここでの問題は、 __autoload('AuthActions') への後続の呼び出しが成功することです。これは、必要な 3 つのクラスが配置されているためです...しかし、既に 'AuthActions' を自動ロードしようとしているという前提だけで死ぬようです --これは PHP にハードライトされているようです。
これをテストしたところ、以下がエラーなしで永久にループすることがわかりました。
以下は同様にエラーになりますが:
この動作は、本質的に同じことになるはずなので、一貫性がないようです(ちょっと)。PHP が内部的にトリガーした autoload が __autoload() へのユーザー呼び出しのように振る舞ったとしても、私は問題がないと思います (もし私がそうしていたとしても、永久にループするという問題になるでしょう。依存関係を解決するためにクラスがロードされていませんでした)。
要するに、PHP でトリガーされたオートロードに基づいて、このようにオートローダーを再帰的にループする方法が必要です...これは単に不可能ですか? おそらく私の特定のバージョンのバグですか?私のテストでは 5.2.6 - 5.3.2 に影響しているように見えるので、全体的なバグだとは考えられません。
アップデート:
AuthAction の init method() のコードは次のとおりです。
別のクラスとして AuthActions を呼び出している場所を確認できますが、失敗したのは、元のロード試行でロードされているためだけであることに注意してください。もちろん、このコードを削除しても機能します。すべての前提条件クラスがロードされるため、AuthActions の元のロードは正常に完了します。
つまり、init() はこのコードに最も適した場所であり、init() 内でまだロードされていない相互依存クラスを使用できない場合でも、その機能を維持したいと考えています。その機能を実装する別の方法は素晴らしいでしょう...理想的には、PHPには、たとえば「自動ロード」イベントがトリガーされたときにコールバックを登録できるようなイベントがあります。これにより、元のオートロードの後にコードを実行できるようになり、この一見無意味な制限が解決されます。
そうは言っても、クラスがロードされるたびにクラスで init() を自動的に呼び出す方法の提案は高く評価され、歓迎されます。
javascript - jqGridでオートロードを無効にする方法は?
jqGridでオートロードを無効にして、必要なときにデータを手動でロードする方法は?
ありがとう。