2012-09-03 16 views

risposta

39

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.

+2

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

+3

@Letharion ha aggiornato la mia risposta, sperando che ciò possa essere d'aiuto. –

Problemi correlati