2016-08-01 25 views
2

を倍増私は倍増した名前空間に何か見ておいてください。たとえば
Namespace/Namespace/Subnamespace/PHP名前空間の規則を - 時々名前空間

を新しいPrestaShopの(1.7)は、この大会
namespace PrestaShop\PrestaShop\Core;

を使用しています誰かが私にメリットを説明してもらえこのタイプの名前空間のですか?

また、いくつかのチュートリアルは、次のように名前空間をについて言う:

namespace mynamespace/classname 
classs classname {} 

これの利点は何ですか?私は、より複雑な名前空間とより多くの型付けという欠点しか見ません。

はまた、このQ & Aを見た:それは相対的な名前空間に依存する

PSバグになりやすい:私は常に絶対的な名前空間を使用し続けるPHP Namespace Questions
を私が唯一の欠点を見ることができます。それは私の気持ちにバグを起こしにくく、私が間違っていたら私を教えてください。

+0

[psr-4](http://www.php-fig.org/psr/psr-4/)に従っています。名前空間自体に何も問題はありませんが、どのように紛らわしいのか分かります。 – Andrew

+0

@Andrew私はPSR-4のラインに沿った答えを書いていましたが、サブネームスペースが必要なものはないようです。これは単なるクリエイターの選択ですか?それはPSR-0に由来しますか? – nerdlyist

+0

@nerdlyist私はそれがクリエイターの選択であると想定しています。それが私が行うことができる唯一のことです。 – Andrew

答えて

2

これは自動読み込みのためのもので、PSR-4の規則に従います。ネームスペースの命名規則は、一般的にクリエイターに委ねられています。唯一必要な部分はトップレベルのネームスペースですが、必要に応じて多くのサブネームスペースを使用できます。 PrestaShopののcomposer.jsonで例えば

彼らが持っている:

"autoload": { 
    "psr-4": { 
     "PrestaShop\\PrestaShop\\": "src/", 
     "PrestaShopBundle\\": "src/PrestaShopBundle/" 
    } 
} 

だから、名前空間PrestaShop\PrestaShop\src内の任意のものにあなたを得ることができます。

彼らが持っているslimフレームワーク(ルータ)では:だから

"autoload": { 
    "psr-4": { 
     "Slim\\": "Slim" 
    } 
} 

あなただけの名前空間Slim\Classを使用している1インチ私はこれが最後に冗長以外のものを傷つけるとは思わない

"autoload": { 
    "psr-4": { 
     "App\\Models\\": "app_name/models", 
     "App\\Validators\\": "app_name/validators" 
     //And so on 
    } 
} 

:私のような何かをした私の最初のプロジェクトの一つで