問題タブ [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.

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

php - 自動ロードがオンの場合、PHPはファイルをインクルードできません

クラスをロードする独自のMVCとオートローダーがあります。ベースのView.phpがCoreフォルダーにあり、そのレンダリング関数が次のことを行うことを除いて、すべてが機能します。

View.phpは名前空間を使用します

インデックスページに移動すると、次のように表示されます。

私は以下を試しました:私は追加しました

そして、私がしたことを含める代わりに:

これにより、ページにヘッダーが表示されますが、エラーも発生します。

header.phpはクラスではないので、私はそれを知っています。ビューファイルです。そのため、オートローダーがベースコントローラーのView.phpをロードしているときに、ファイルを含める方法がわかりません。

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

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は呼び出されませんね。

0 投票する
0 に答える
158 参照

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メソッドを使用したいと思います。誰かがこの問題を解決するのを手伝ってくれるアドバイスを提供してくれることを願っています。

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

php - php.ini インクルード パスからの名前空間クラスの自動ロード

プロジェクト外のディレクトリに名前空間が設定されているクラスがあります。ディレクトリはinclude_pathディレクティブに含まれています。spl_autoloadクラスを使用してクラスを自動ロードしたい。しかし、私はエラーしか得ていません。プロジェクトディレクトリからファイルをロードしようとしているだけのようです。

これは Windows マシンですが、Windows または Linux マシンで動作させたいと考えています。

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

php - カスタム オートローダーを使用して PHP コア クラスをロードする

フォーラムで質問のデータベースを検索してきましたが、私の質問に対する解決策が見つかりません。

私が開発しているオートローダーで発生した疑いがあるので、私はあなたに来ます。

ポイントは、私が定義したクラスをインスタンス化しようとすると、オートローダーは正常に動作しますが、PHP コアのクラスをインスタンス化しようとすると、次のエラーがスローされます。

たとえば、これをやろうとすると:

次に、次のエラーがスローされます。

クラスへのルートを定義したクラスをオートローダーがロードしようとしていることに気付きました。

私の質問は、カスタムのオートローダーを使用している場合、PHP コアのクラスをロードするにはどうすればよいですか?

私が提示されたこの問題を解決するためにあなたが私を導いてくれることを願っています.

よろしくお願いします。

カスタム オートローダのコードを配置していないことをお詫びします。見落としていました。

コードは symfony で使用されているものと同じですが、変更および簡略化されています。

}

しかし、元のファイルを見たい場合はここにあります

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/ClassLoader/ClassLoader.php

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

php - SplClassLoader の名前空間要件とカスタム ディレクトリ レイアウトをどのように調整できますか?

最近、PHP でカスタム MVC フレームワークを書き始めました。それは基本的に学習演習です。

私のクラスは次のディレクトリにあります。

  • システム/ライブラリ/
  • システム/コントローラー/
  • システム/モデル
  • アプリケーション/ライブラリ/
  • アプリケーション/コントローラー/
  • アプリケーション/モデル

名前空間と Apache 2 ハンドラー スタイルの URL (コントローラー/アクション/ID) を使用してコントローラーをインスタンス化する方法がわからないため、名前空間を使用していません。他のクラスを自動ロードする Bootstrap クラスを作成しました。

それは正常に動作します。ただし、PSR-0 で推奨されている実装を実際に使用する必要があることはわかっています。

https://gist.github.com/221634

ただし、名前空間なしで機能させる方法がわかりません。名前空間はオプションのパラメーターのようです。ただし、次のようにしても何も起こりません。Apache ログにエラーが記録されることさえありません。

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

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 - 別のエラー メッセージが表示されます。

適切なコード:

私が得ているエラーメッセージ:

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

php - PHP: インターフェイスとアブストラクトを自動ロードする方法

最初にオートロードするこのオートローダークラスがありますが、今はオートロードも行いclassesたいと思っています。interfacesabstracts

だから私はこの答えに従って変更を加えました、

テストしましたが、このオートローダークラスはインターフェースをまったくロードしません。私が見逃したアイデアはありますか?

たとえば、これは私のインターフェイス ファイルです。

とその内容、

以下は、このオートローダークラス全体です。

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

php - Symfony ClassLoader がロードされない

個人用の小さなphpフレームワークを開発しています。Symfony で使用されている UniversalClassLoader でクラスを自動ロードしようとしていますが、これらのクラスを使用しようとするとエラーが発生しました

致命的なエラー: クラス 'Controller' が /opt/lampp/htdocs/web/globeapi/Start.php の 14 行目に見つかりません

ここにStart.phpファイルコードがあります。

これがControllerクラスのコードです

これは、自動ロード用のクラスの配列を返す Auto.php ファイルのコードです。

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

php - UniversalClassLoader がクラスをロードしていません

私は小さなphp mvcフレームワークを書いています.Controller、Modelなどのクラスを自動ロードしたい.そのために、SymfonyのUniversalClassLoaderを使用しようとしています.

ここにBootstrap.phpがあります

ここにController.phpがあります

MapClassLoader も試しましたが、結果は同じです。