2017-12-04 12 views
2

Silverstripe 3では、eveythingはオンデマンドで自動ロードされました。つまり、使用したいクラスとメソッドを知ることができました。例:Silverstripe 4 - アクセスコアメソッド

Debug::dump('dump message'); 

私が正しくSS4の概念を理解していた場合、1は、メソッド(またはプロパティ)を使用したいファイルにクラスをインポートする必要があります。上記の例では、1は正しい理解という点である次のようにファイル

use /name/space/to/Debug 
Debug::dump('dump message'); 

の一番上に何かをする必要があるでしょうか?もしそうなら、私の本当の疑問は、開発者がどのようにコアのすべての正確な位置を効果的に知っているかということです。これらのコアファイルがシステムのどこに名前の上にあるのか、使用する方法を正確に知ることが期待されていますか?これを支援するツールや方法はありますか?

答えて

7

最初に、あなたが話していることはオートローディングではなく、よりエイリアシングに似ていますが、2つは関連しています。

Debugクラスがグローバル名前空間に存在しないため、その名前ははるかに冗長です(SilverStripe\Dev\Debug)。これは、完全修飾クラス名または略して「FQCN」と呼ばれます。しかし、その新しい名前について何も短いことはありません。タイプするのは面倒です。クラスの名前が変更された場合は、更新がたくさんあります。

この目的のために、useステートメントを使用して、そのクラスを別名でファイルのローカルスコープに「インポート」することができます。デフォルトでは、そのエイリアスはFQCN(Debug)の末尾部分にすぎませんが、好きなカスタムエイリアスを使用することもできます。 (use SilverStripe\Dev\Debug as MyDebugger)。

SS4は現在、名前空間が重要な部分であるPSR-4 autoloadingを使用しています。非常に短期的には、ディレクトリ構造がFQCNと一致しなければならないことを指示する。 /framework/src/Dev/Debug.php。これにより、オートローディングが確定的かつ予測可能になります。

工具に関しては、PHPStormのような完全に動力のあるIDEを使用すると、名前空間のクラスを持つフレームワークでdev作業を行う上で非常に貴重です(最近の例外よりもはるかにルールです)。 PHPStormのような優れたIDEは、クラス名を挿入するだけでなく、useステートメントを追加します。多くの他の多くの素晴らしい時間節約機能が追加されます。

もっと手作業でアプローチするには、api.silverstripe.orgがクラスマッピングを検索するのに適しています。

+3

詳細な説明をいただきありがとうございます。それはすべて意味があります。 PHPStormとのやりとりは、/ vendorの中に何も見つけられなかったので、ちょっとしたことでした。しかし、あなたが特定のディレクトリを置くことができるのは除外マークでした。 – Aaryn

関連する問題