問題タブ [spl-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.
php - 自動ロードがオンの場合、PHPはファイルをインクルードできません
クラスをロードする独自のMVCとオートローダーがあります。ベースのView.phpがCoreフォルダーにあり、そのレンダリング関数が次のことを行うことを除いて、すべてが機能します。
View.phpは名前空間を使用します
インデックスページに移動すると、次のように表示されます。
私は以下を試しました:私は追加しました
そして、私がしたことを含める代わりに:
これにより、ページにヘッダーが表示されますが、エラーも発生します。
header.phpはクラスではないので、私はそれを知っています。ビューファイルです。そのため、オートローダーがベースコントローラーのView.phpをロードしているときに、ファイルを含める方法がわかりません。
php - Linuxbashからphpを実行するときのオートローダー
私は現在、自動ビデオ変換を使用したある種のアップロードに取り組んでいます。現時点では、アップロードが完了した後、phpシェルコマンドを使用してphpスクリプトを実行しているため、ユーザーは変換が完了するまで待つ必要はありません。そのようです:
現在、変換スクリプトファイルで、別のクラス「UploadFunctions」の関数を使用して、データベースのステータス(開始、変換、終了など)を更新しています。ただし、このUploadFunctionsクラスは、たとえばデータベース接続が確立される別のクラス「Controller」を継承するという問題があります。現在、spl_autoloaderを使用して、必要なファイル(controller.phpなど)の特定のディレクトリを検索していますが、変換スクリプトはオートローダー全体のコンテキストから外れているため、Controllerクラスを認識せず、致命的なphpエラーをスローします。変換スクリプトのコードは次のとおりです。
私はこれを完全に間違ってやっていますか、それともこれを達成するためのより良い方法がありますか?さらにコードや情報が必要な場合はお知らせください。どうもありがとう
これが私のspl_autoloadコードです:
プロジェクトをサブフォルダーに分割し、アップロード、myaccount、ギャラリーなどの機能を表します。すべてのサブフォルダーには、コントローラーとローカルの2つのフォルダーもあります。Controllerは、この部分を制御するクラス(たとえば、アップロード)であり、localは、必要なローカルクラスを配置するフォルダーです。コントローラクラスは、サブプロジェクトフォルダにあるindex.phpから呼び出されます。「libs」と「global」は、データベース、ユーザーなどのプロジェクト全体のクラスです。これは私のフォルダ構造の例です:
www /index.php//メインサイト
www / upload / index.php //アップロードのためにコントローラーを呼び出し、spl_autoloadを初期化します
www / upload / controller /indexcontroller.php//アップロードの機能
www / upload / local /processVideo.php//これは変換スクリプトです。
私はspl_autoload関数にかなり慣れていません。私の意見では、スクリプトが「php -f processVideo.php」を呼び出している場合、spl_autoloadは呼び出されませんね。
php - spl_autoloadサーバー関連の問題
1つの特定のサーバーのspl_autoloadに非常に奇妙な問題があるようです。警告:spl_autoload()[function.spl-autoload]:file.phpにアクセスできません
また、チェックしたところ、WHMパネルで、インクルードパスが。:/ usr / lib / php:/ usr / local / lib/phpに設定されていることが示されています。
この特定のサーバーは、PHP5.3.8とeAcceleratorを実行しているLinuxRedHat-9.3.6です。上記のコードは他の10台のサーバーでテストされており、正常に動作しているため、この特定のサーバーでこれが発生する理由がわかりません。
アプリケーションの速度を低下させるinclude/requireの代わりに、spl_autoloadメソッドを使用したいと思います。誰かがこの問題を解決するのを手伝ってくれるアドバイスを提供してくれることを願っています。
php - php.ini インクルード パスからの名前空間クラスの自動ロード
プロジェクト外のディレクトリに名前空間が設定されているクラスがあります。ディレクトリはinclude_path
ディレクティブに含まれています。spl_autoload
クラスを使用してクラスを自動ロードしたい。しかし、私はエラーしか得ていません。プロジェクトディレクトリからファイルをロードしようとしているだけのようです。
これは Windows マシンですが、Windows または Linux マシンで動作させたいと考えています。
php - カスタム オートローダーを使用して PHP コア クラスをロードする
フォーラムで質問のデータベースを検索してきましたが、私の質問に対する解決策が見つかりません。
私が開発しているオートローダーで発生した疑いがあるので、私はあなたに来ます。
ポイントは、私が定義したクラスをインスタンス化しようとすると、オートローダーは正常に動作しますが、PHP コアのクラスをインスタンス化しようとすると、次のエラーがスローされます。
たとえば、これをやろうとすると:
次に、次のエラーがスローされます。
クラスへのルートを定義したクラスをオートローダーがロードしようとしていることに気付きました。
私の質問は、カスタムのオートローダーを使用している場合、PHP コアのクラスをロードするにはどうすればよいですか?
私が提示されたこの問題を解決するためにあなたが私を導いてくれることを願っています.
よろしくお願いします。
カスタム オートローダのコードを配置していないことをお詫びします。見落としていました。
コードは symfony で使用されているものと同じですが、変更および簡略化されています。
}
しかし、元のファイルを見たい場合はここにあります
https://github.com/symfony/symfony/blob/master/src/Symfony/Component/ClassLoader/ClassLoader.php
php - SplClassLoader の名前空間要件とカスタム ディレクトリ レイアウトをどのように調整できますか?
最近、PHP でカスタム MVC フレームワークを書き始めました。それは基本的に学習演習です。
私のクラスは次のディレクトリにあります。
- システム/ライブラリ/
- システム/コントローラー/
- システム/モデル
- アプリケーション/ライブラリ/
- アプリケーション/コントローラー/
- アプリケーション/モデル
名前空間と Apache 2 ハンドラー スタイルの URL (コントローラー/アクション/ID) を使用してコントローラーをインスタンス化する方法がわからないため、名前空間を使用していません。他のクラスを自動ロードする Bootstrap クラスを作成しました。
それは正常に動作します。ただし、PSR-0 で推奨されている実装を実際に使用する必要があることはわかっています。
https://gist.github.com/221634
ただし、名前空間なしで機能させる方法がわかりません。名前空間はオプションのパラメーターのようです。ただし、次のようにしても何も起こりません。Apache ログにエラーが記録されることさえありません。
php - SplClassLoader 使用時のエラー
まず、次の SplClassLoader を使用して手を試しています - https://gist.github.com/221634
これが私のファイル構造です:
これが Group (Group.php) という私のテストクラスです
すべてを呼び出している index.php ファイルは次のとおりです。
次のエラーが表示されます。
名前空間とパスをローダーに渡すときに、考えられるすべての組み合わせを試しました。それは決して機能しません。
更新 #1 - index.php の 17 行目:
更新 #2 - 構成情報
- アパッチ/2.2.15 (レッドハット)
- PHP 5.3.3
更新 #3 - 別のエラー メッセージが表示されます。
適切なコード:
私が得ているエラーメッセージ:
php - PHP: インターフェイスとアブストラクトを自動ロードする方法
最初にオートロードするこのオートローダークラスがありますが、今はオートロードも行いclasses
たいと思っています。interfaces
abstracts
だから私はこの答えに従って変更を加えました、
テストしましたが、このオートローダークラスはインターフェースをまったくロードしません。私が見逃したアイデアはありますか?
たとえば、これは私のインターフェイス ファイルです。
とその内容、
以下は、このオートローダークラス全体です。
php - Symfony ClassLoader がロードされない
個人用の小さなphpフレームワークを開発しています。Symfony で使用されている UniversalClassLoader でクラスを自動ロードしようとしていますが、これらのクラスを使用しようとするとエラーが発生しました
致命的なエラー: クラス 'Controller' が /opt/lampp/htdocs/web/globeapi/Start.php の 14 行目に見つかりません
ここにStart.php
ファイルコードがあります。
これがControllerクラスのコードです
これは、自動ロード用のクラスの配列を返す Auto.php ファイルのコードです。
php - UniversalClassLoader がクラスをロードしていません
私は小さなphp mvcフレームワークを書いています.Controller、Modelなどのクラスを自動ロードしたい.そのために、SymfonyのUniversalClassLoaderを使用しようとしています.
ここにBootstrap.phpがあります
ここにController.phpがあります
MapClassLoader も試しましたが、結果は同じです。