問題タブ [psr-0]

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 に答える
155 参照

php - プロジェクト全体が PSR-0 に準拠する必要があるかどうか

PSR-0 は、任意のクラスまたはライブラリ/外部 API のみをオートロードできると想定していますか?

PSR-0に準拠したMVCの構造例

TestController.php

... それとも、コントローラ、モデルなどのカスタム オートローダだけですか?

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

php - PHP IDEはPSR標準に準拠していますか?

コードフォーマット標準としてPSR0からPSR3標準のすべてのルールに従うPHPIDEはありますか?

すべてのIDEが特定のコードフォーマット標準に準拠していることは知っていますが、PSR0からPSR3の標準に正確に/ほとんど準拠しているかどうかはわかりません。

そのようなPHPIDEがあるかどうか教えてください。

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

php - PHP PSR-0 静的クラス

名前空間を使用するようにOO PHPサイト(MVC構造に大まかに従う)を書き直そうとしています-そしてPSR-0に従いたいです。

現在のサイトには、構成データの取得などを処理するためにあちこちで呼び出す静的メソッドでいっぱいのクラス(APPと呼ばれる)があります。APP::get_config('key').

明らかに名前空間では、私は呼び出す必要があります\TheNameSpace\App::get_config('key')。私はこのクラスを頻繁に使用するので、使用するたびに名前空間にプレフィックスを付ける必要がないようにしたいと考えています。通常はサブ名前空間の下にある他のクラス内からメソッドを呼び出します。そのため、ファイルの先頭で名前空間を変更しても実際には機能しません。

だから、私の質問は、毎回名前空間をプレフィックスすることなく、どこでも呼び出すことができるメソッドを持つ「グローバル」クラスを持つ最も簡単な方法は何ですか?

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

laravel - Laravel3にPSR-0互換性のないライブラリをロードする

PSR-0に準拠していないLaravelの古いライブラリを使用する必要があります。

これは、「require」、「include」、「require_once」などの多くのファイルとディレクトリで構成されています。それで、それを「ライブラリ/サブフォルダ」に入れてエントリスクリプトを自動ロードしようとしましたが、フレームワークが壊れて、「クラス'Laravel\Response'が見つかりません」というエラーが常に発生します。このエラーの理由はわかりませんが、Laravelの自動読み込みシステムがどういうわけか壊れていると思います。

これを修正する方法は?この種のライブラリをロードして、動作を維持するにはどうすればよいですか?

ありがとうございました!

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

php - 同じファイル上の関数とクラス:未定義の関数

PSR-0定義(自動ロードあり)に従って、クラスと関数の定義を含むファイルがあります。

そして、同じ名前空間に配置して、そのクラスのテストを行います。

b()テストクラス内の関数にアクセスしようとすると、undefined functionエラーが発生します。

何も機能していないようです。その関数を呼び出すにはどうすればよいですか?

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

php - PSR オートローダー機能の失敗

ここで単純なものが欠けている可能性があり、2 番目の目が必要になると思います。これは致命的なエラー クラスが見つからないため失敗します。自動ロード機能は、PSR-0 github ページから取得されました。

これは私の index.php です。クラスは Vendor/Package/Example.php にあります。内容は次のとおりです。

これを行うと機能しますrequire_once my_autoload('Vendor\Package\Example');

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

php - Composer がライブラリのオートロードを生成しない

「init」と、init に必要なライブラリの 2 つのプロジェクトをセットアップしました。どちらも PSR-0 オートロードが設定されていますが、ライブラリからのオートロード値は init プロジェクトの vendor/composer/autoload_namespaces.php に追加されていません。

ライブラリのサンプル composer.json:

そのライブラリを必要とするプロジェクトの composer.json のサンプル:

ライブラリには、ファイル src/LXP/Library/Something.php にクラス LXP\Library\Something が含まれています。

ライブラリを必要とするプロジェクトには、ファイル src/LXP/Init/Now.php にクラス LXP\Init\Now が含まれています。

「init」プロジェクトで composer install を実行すると、ライブラリ プロジェクトがダウンロードされ、ベンダーに正しく配置されますが、 vendor/composer/autoload_namespaces.php にはライブラリの自動ロード情報が含まれておらず、現在のプロジェクトの情報のみが含まれています。

私は何を間違っていますか?ライブラリ プロジェクトで dump-autoload を実行すると、autoload_namespaces.php ファイルは正しく、クイック ブートストラップ スクリプトによって、実際にクラスが取得されていることが確認されます。

編集 - これは、satis によって生成された packages.json の問題です。それを修正するには、ライブラリの composer.json から、satis に提供する json ファイルに autoload 情報を追加する必要がありました。これは不要な重複のように思われるため、おそらく間違っています。satis ライブラリのオートロード情報を保存できる単一の場所はありますか? たとえば、satis は、スキャンするライブラリに存在する composer.json ファイルを読み取ることができますか?

編集 #2 - Satis は、「パッケージ」タイプとして指定されたリポジトリから composer.jsons を読み取りません。「パッケージ」は composer.json を持たないライブラリに使用され、それらの周りに composer のような依存関係管理をラップする方法であるため、これは後から考えると明らかです。

satis.json のリポジトリを 'vcs' タイプに変更すると、composer.json が読み取られ、情報 (autoload 仕様を含む) が解析され、packages.json に格納されました。

@Seldaek - 私の satis 設定が問題であることを示唆していただきありがとうございます。これにより、私の立場にある他の誰かの satis / composer の動作が明確になることを願っています。

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 も試しましたが、結果は同じです。

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

php - 同じ名前と PSR-0 名前空間を持つクラス メソッド内の Php クラス宣言、エラー

PSR-0準拠のatmである独自のMVCフレームワークを作成しました。php-ActiveRecord を ORM として使用します。User名前空間 に存在する という名前のコントローラーから、名前空間に存在TapMVC\Applicationする ActiveRecord モデル ALSO を呼び出そうとする問題を発見しました。UserTapMVC\Db

これにより、次のエラーが発生します。

12 行目の /path/to/project/app/Controllers/user.php でクラス TapMVC\Application\User を再宣言できません

12行目は、ユーザーコントローラーのプロトタイプ/宣言です。

なぜ私はこれを行うことができないのですか?名前空間が異なり、インスタンス化時に名前空間プレフィックスを持っているクラスの場合、同じ名前を付けても問題ないと思いましたか? また、データモデルは自動ロードによってコントローラーの前に宣言されているように見えます (エラーをトリガーするユーザーコントローラー宣言であるため)。では、データモデルが名前空間にあり、コントローラーの場所にTapMVC\Dbない場合に競合が発生するのはなぜですか?TapMVC\Application

異なる名前空間を定義しても、PHPはアクティブなファイルと同じ名前空間でオブジェクトを宣言することがわかりますが、よくわかりません。

誰かが助けてくれることを願っているので、データモデルに次のように名前を付ける必要はあり(ProjectName-prefix)Userません。データベーステーブルを編集して、ユーザーモデルとユーザーコントローラーを作成します。