Composer'da psr-4 autoloading'i nasıl kullanmam gerektiği konusunda biraz kafam karıştı.Composer ile psr-4 autoloading kullanırken ad alanını neden belirtin?
/
|- Core/
| - Router.php
|- App/
| - Models
| User.php
|- composer.json
Temelde, proje kök: en Böyle bir klasör yapısını var diyelim composer.json; Router php sınıfı içeren bir Çekirdek klasöründe; Bir Kullanıcı sınıfını içeren bir Modelleri klasörü içeren bir App klasörü.
Yönlendirici sınıf şuna benzer:
<?php
namespace Core;
class Router {
}
ve kullanıcılar sınıf aşağıdaki gibidir:
<?php
namespace App\Models;
class User {
}
Yani özdevinimli_yükle Composer psr-4 autoloader kullanarak bu sınıflar, yapabileceğim yapabilirsiniz bu composer.json:
{
"autoload": {
"psr-4": {
"Core\\": "Core",
"App\\Models\\": "App/Models"
}
}
}
Öyleyse size koşudan sonra (onları gerektirmeden sınıflarını kullanabilirsiniz Böyle ning composer dump-autoload
):
$router = new Core\Router();
$user = new App\Models\User();
hiçbir sorunları ile çalışır.
Ancak, ben de composer.json yapabilirsiniz:
, belgelere göre köküne göre herhangi ad olabilen bir geri dönüş dizin olmasına{
"autoload": {
"psr-4": {
"": ""
}
}
}
. Ben diyor ki besteci autoloader bu "boş" girdisini, alarak Yani özdevinimli_yükle benim sınıfların herhangi Doğru klasörü takip edebilirsiniz eğer, "kök başlayarak her ad bir sınıf için herhangi dizinde bak" adlandırma/ad alanı yapısı.
Peki, neden eski eğer ikincisi eserler ve bir daha basit sorumu yapacağını edilir? Performanslı bir şey mi? Yoksa başka bir sebebi var mı?
Bilmiyorum ... neden * olur * seni? Yapmazdım. Sence neden yapmalısın? – deceze
Biri için, eğer bir gün tüm modellerinizi başka bir yere taşımayı seçerseniz, eski yolu kullanarak sadece bir satırı değiştirebilir, ikinci adı kullanarak tüm ad alanlarını yeniden adlandırmanız gerekir. – apokryfos
Özel/paket/src'de özel bir paketiniz varsa, büyük olasılıkla 'custom \ library \ src' adlı bir ad alanı, ancak sadece 'Library' yapmak istemezsiniz. Tüm bunlar, projenizde, apokyrfos'un yaptığı noktadan başka, konvansiyonlara düşer. – Devon