2015-01-31 20 views
15

Ben besteci gelen psr-4 autoloader kullanın:Composer'ı, satıcıların dışındaki sınıfları otomatik olarak yüklemek için nasıl kullanılır?

"autoload": { 
    "psr-4": { 
     "DG\\Munchkin\\": "src/DG/Munch/" 
    } 
} 

Bu /var/www/html/xxx/vendor/yyy/src/DG/Munch

yükler sınıfları Ama nasıl /var/www/html/xxx/ gelen sınıfları yükleyebilirsiniz?

Kendi otomatik yükleyicimi yazdım, ancak vendor/autoload.php (composer autoload) ve otomatik yükleyicim gerektiğinde, kendi otomatik yükleyicimde bir sınıfın örneğini oluşturana kadar çalışmayacak.

+2

basitçe 'files' veya' classmap' autoloader kullanamaz mıyız? https://getcomposer.org/doc/04-schema.md#autoload – hndr

+0

Yup, dosyalar ya da sınıf haritaları hile yapmalıdır. – Zarathuztra

+0

Hayır, çünkü otomatik yükleme bölümünde dış satıcı klasöründen klasör seçemiyorum. –

cevap

25

src dizini, proje kökünüzde bulunur. Onun vendor dizin ile aynı seviyede. Eğer belirtilen gibi

Eğer

"autoload": { 
    "psr-4": { 
     "DG\\Munchkin\\": "src/DG/Munch/" 
    } 
} 

tanımlarsanız bu, /var/www/html/xxx/vendor/yyy/src/DG/Munch den sınıfları yüklemez.

proje yapısı Çünkü:

/var/www/html/ 
+- /xxx (project) 
    - composer.json 
    +- /src 
     +- DG 
      +- Munch 
    +- /vendor 
     - autoload.php 
     +- vendor-projectA 
     +- vendor-projectB 
     +- yyy 

\DG\Munchkin ad

/var/www/html/xxx/src/DG/Munch içindeki sınıflara harita ve içinde değil

/var/www/html/xxx/vendor/yyy/src/DG/Munch olacaktır.

Fakat sınıfları nasıl/var/www/html/xxx /? o önyükleme var

"autoload": { 
    "psr-4": { 
     "ProjectRoot\\" : "", 
     "NamspaceInSourceDir\\" : "src/"   
    } 
} 

veya index.php besteci autoloader yüklemek veya sırasında:

Projenizin (/ var/www/html/xxx/iç) composer.json yolları tanımlayın ve elle yolları ekleyin:

$loader = require 'vendor/autoload.php'; 
$loader->add('Namespace\\Somewhere\\Else\\', __DIR__); 
$loader->add('Namespace\\Somewhere\\Else2\\', '/var/www/html/xxx'); 

Referans: https://getcomposer.org/doc/04-schema.md#autoload

İlgili konular