Questo è in realtà molto semplice. L'esclusione della directory dei fornitori dal repository è l'approccio giusto. Il tuo codice dovrebbe essere conservato in un posto separato (come src).
utilizzare la proprietà autoload per far sì che il compositore riconosce lo spazio dei nomi (s):
{
"autoload": {
"psr-4": {
"Acme\\": "src/"
}
}
}
Supponendo di avere i nomi delle classi seguenti standard PSR-4, dovrebbe funzionare. Di seguito alcuni esempi di nomi di classi e le loro posizioni sul file system:
- Acme \ Command \ HelloCommand -> src/Comando/HelloCommand.php
- Acme \ Form \ Type \ EmployeeType -> src/Form/Tipo/EmployeeType.php
Ricordarsi di definire uno spazio dei nomi per ogni classe. Ecco un esempio di Acme \ Command \ HelloCommand:
<?php
namespace Acme\Command;
class HelloCommand
{
}
Non dimenticare di includere il caricatore automatico nel controller di PHP:
<?php
require 'vendor/autoload.php';
saperne di più su PSR-4 standard on PHP Framework Interoperability Group.
Si noti che se si modifica composer.json
, è necessario eseguire l'installazione, l'aggiornamento o dump-autoload per aggiornare i percorsi di classe del caricatore automatico.
fonte
2012-09-03 12:56:53
Qualsiasi possibilità che tu possa inviare aggiornare la risposta con esempi di codice semplici con una classe fittizia o due? Nonostante abbia letto la documentazione a cui ci si è collegati e confrontando la mia directory/namespacing con quelli usati nel venditore /, non riesco a caricare le mie classi. – Letharion
@Letharion ha aggiornato la mia risposta, sperando che ciò possa essere d'aiuto. –