問題タブ [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 に答える
1079 参照

php - composer による複数の PHP プロジェクトの自動ロード

次のようなフォルダーレイアウトがあるとします

これらのプロジェクトは同じレベルにある必要があり、相互に共存する必要があります。たとえば、およびその逆のprojectAコードを使用する可能性があるため、フォルダーに配置することはできません。projectBprojectCvendor

問題はautoload.php、各プロジェクトで自分のフォルダーを自動ロードすることができsrcますvendorが、他のプロジェクトも自動ロードする方法ですか?

隣人のプロジェクトが PHP 名前空間としてフォルダー名を持つと仮定すると、将来、新しいプロジェクト フォルダーを追加したときに autoload が魔法のように機能するように (composer を介して) autoload.php をセットアップすることは可能ですか?

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

php - PHP では常に完全修飾クラス名を使用する必要がありますか?

次のようなサンプルコードが表示されます

代わりに完全修飾クラス名を常に使用しないのはなぜですか?

したがって、このファイルがどの名前空間で使用されていても心配する必要はありませんよね?

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

php - composer を使用して 2 つのベンダー プロジェクトを同時に自動ロードする

独自のcomposer.jsonを使用して、composer が正しく設定された 2 つのプロジェクト (project1、project2) があります。

今、別のphpファイルで、それらを介して自動ロードします

そして、私はエラーが発生します

wp-cli の問題ですか、それとも composer の問題ですか? monolog などの別のライブラリで試してみましたが、これは問題ありません。

何か案が?

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

php - カスタム名前空間の Composer psr-0 自動読み込みが機能しない

PSR-0 を使用して独自の名前空間を composer に追加するのに問題があります。これこれを読みましたが、まだ機能しません

composer.json

srcフォルダーは、と同じディレクトリ内に配置されますcomposer.json

srcディレクトリの構造は次のとおりです 。

Keys.php

index.php

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

refactoring - phpstorm ファイルを開かずにクラスを移動

クラスファイルを開かずにphpstormでクラスを移動し、クラス名を選択してF6を押すことは可能ですか???

PSR0のソースルートを定義したのですが、問題に関連するメモのようです

intellij のアイデアにより、クラスを取得して、必要なパッケージに配置するだけで、名前空間が更新されます

ありがとうございました

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

php - NetBeans IDE を使用して PHPUnit テストとオートロードを編成する方法

自動ロード ( http://www.php-fig.org/psr/psr-0/ ) と PHPunit テスト ( https://phpunit.de/manual/current/en/organizing-tests.html )にはルールがあります。個別に実装するのは簡単ですが、それらを組み合わせるのは簡単ではありません。

テストを整理するためのPHPUnitのベストプラクティスのトピックも読みましたが、答えを適用することは私には明らかではありません。私自身のプロジェクトを書いているときに、おそらくコード構成に同じ起源を持ついくつかの問題がありました。本当に簡単な例のレシピがあればいいのにと思います。したがって、私は自分の質問をかなり大きくします。

サンプルプロジェクト

PHPUnit、SVN、および Doxygen をサポートしているため、私はNetBeans IDE 7.4を使用しています (ただし、その IDE を使用した経験はありません)。

プロジェクトのプロパティ

  • プロジェクト フォルダー: C:\xampp\htdocs\myapps\PhpProject1
  • ソースフォルダー: C:\xampp\htdocs\myapps\PhpProject1
  • テスト フォルダー: C:\xampp\htdocs\myapps\PhpProject1\tests

最初の問題があります。NetBeans は、ミラーの src/tests 構造を最初からブロックします。Source Folderの [ Browse ] ボタンはありません。Test フォルダSource フォルダとは異なる必要があります。

プロジェクトの外にある PHAR ファイルから PHPUnit と skelgen を使用します。(ツール->オプション->PHP/PHPUnit )

  • PHPUnit スクリプト: C:\xampp\phar\phpunit.phar
  • スケルトン ジェネレーター スクリプト: C:\xampp\phar\phpunit-skelgen-1.2.1.phar

プロジェクトディレクトリに次のファイル構造があります

以来src、名前空間ではありません

  • ファイルsrc/MyPack/Foo/Bar.phpにはクラスが含まれていますMyPack\Foo\Bar
  • ファイルsrc/MyPack/Quu/Baz.phpにはクラスが含まれていますMyPack\Qoo\Baz
  • ファイルsrc/Client.php にはクラスが含まれていますClient

srcAutoload.phphttps://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.mdからの変更された PSR-0 自動ロード実装が含まれています。違いは、実行前require()に PSR-0 ファイル名の前にsrc/

テスト生成とオートロードの問題

とクラスにツール/テストの作成(コンテキストメニューから)を使用しましたが、最終的に次の構造になりますBarBaz

それは間違いなくミラー対称ではありません。さらに、生成されたテストは、テストしているクラスをロードする方法を知りません。

オートロードの私の回避策

前述のように、テスト ランナーにはプロジェクトとは異なる作業ディレクトリがあります。したがって、テスト用のオートローダーは別の完全なファイル名を作成する必要があります。PSR-0 オートローダーを複製し、名前を付けて保存し、tests/srcAutoloadFromTests.php別のプレフィックスを追加しました

その後、Use Bootstrap (Project Properties->Testing/PHPUnit ) を追加しました。ファイルtests/bootstrap.phpに含まれるもの:

このソリューションにより、PHPUnit はテストを実行しますが、私には見苦しく見えます。

より具体的な質問

ミラーリングsrc/tests/オートロードに役立たないのはなぜですか?

正しいフォルダーを作成してファイルを移動することにより、ミラーリングされた構造を手動で作成しました。

https://phpunit.de/manual/current/en/organizing-tests.html によると、PHPUnit は test ディレクトリを再帰的にトラバースすることで、テストを自動的に検出して実行できます。私にはうまくいきません。my がないsrcAutoloadFromTests.phpと、以前のミラー化されていない構造と同じエラーが発生します。

自動読み込みコードの重複について

NetBeans ではソース フォルダーをテスト フォルダーとして使用できないため、同じクラスに対して 2 つのオートローダーが必要です。それが良い習慣かどうかはわかりません。

オートロードは、同じプロジェクトで作業している他のプログラマーを悩ませるべきではありません。もっと一般的なものを探します。

また、将来的にはサードパーティのコードを使用できます。彼らのオートローダーも複製する必要がありますか?

src/およびtests/フォルダは最上位にする必要がありますvendor/

私はしばらく前にオートローディングのルールを学んでいます。src/PSR-0 は PSR-4 に従って非推奨としてマークされており、パスの途中にtests/配置する必要があることがわかりました。

ただし、サードパーティのコードを最上位vendor/フォルダー内に配置する慣行があります。src/tests/フォルダを同じレベルに配置しないでください。

これにより、構造全体がよりPSR-0スタイルになります。

NetBeans での PHPUnit のヒントなし

BazTest および BarTest コードを記述している間、NetBeans IDE は PHPUnit メソッドをヒントしませんが、両方のクラスが拡張されています。\PHPUnit_Framework_TestCase

PHAR の PHPUnit を使っているからでしょうか。

例を引用することで、私の質問がより明確になったことを願っています。読んでくれてありがとう、私は良いアドバイスを探しています

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

php - クラスが見つからない問題 (Composer、PHPUnit)

PHPUnit から次のエラーを取得します。

私の構造は次のようなものです:

composer を介して行われるオートロード:

PSR0、PSR2、PSR4、...で試しました

MoneyTest クラス:

マネークラス:

FoobarTest\Money\Moneyの代わりにロードしようとしているのはなぜFoobar\Money\Moneyですか?

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

php - Composer を使用してローカル リポジトリから php クラスをロードする方法は?

Php と composer は初めてです. composer を使用して Php クラスに別のモジュールにアクセスしたいです. これは私の基本的なプロジェクト構造です (2 つのモジュール共通とワーカー) index.php

共通/ベンダー/キャンバス/test.php

共通/composer.json

worker/composer.json

worker/tempcaller.php

psr-0 またはリポジトリでもそれを行うことができません。これを行う方法はありますか?

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

php - クラス、名前空間、および psr-0 自動ロードを備えた Wordpress プラグイン

私はこのWordpressのことでかなり新しいもので、独自のテーマを作成し、スライドショーを処理するプラグインを作成したいと考えています.

(後で何人かの生徒にこれを教えなければならないので、既存のプラグインをそのまま使用することはできません)

下部のhttp://www.php-fig.org/psr/psr-0からオートローダーを実装しましたが、正常に動作します。

クラス内のすべてのメソッドとすべてを呼び出すことができるので、問題ありません。実際の質問は次のとおりです。

とき

が呼び出され、メソッドを実行します

しかし、dbDelta() は未定義の関数です。関数の前に名前空間を設定しようとしていることがわかりました (理由はわかりません。なぜなら、クラス メソッドではなく関数にあるからですよね?)。とにかく私はそれをこのように呼んでみました

それは機能しているようですが、まだ機能が見つかりません。クラスで dbDelta を手動で要求できますか、それとも何か問題がありますか?

非常に長い質問で申し訳ありません...

ウルリック・マッカードル