Gerenciamento de código personalizado com o carregador automático do Composer?

Comecei um novo projeto, onde use o Composer para lidar com algumas dependencies, bem como com o seu carregamento automático.

Eu apenas mantenho o arquivo composer.json no VCS, em vez de todo o diretório do fornecedor, então eu não quero começar a adicionar meu código lá.

Como devo lidar com o meu próprio código específico do projeto, para que ele também seja carregado automaticamente?

Isso é realmente muito simples. Excluir o diretório de fornecedores do seu repository é a abordagem certa. Seu código deve ser armazenado em um lugar separado (como src).

Use a propriedade de autoload para que o compositor reconheça seu namespace (s):

{ "autoload": { "psr-4": { "Acme\\": "src/" } } } 

Supondo que você tenha nomes de class seguindo o padrão psr-4, ele deve funcionar. Abaixo de alguns exemplos de nomes de classs e suas localizações no sistema de arquivos:

  • Acme \ Command \ HelloCommand -> src / Command / HelloCommand.php
  • Acme \ Form \ Type \ EmployeeType -> src / Form / Type / EmployeeType.php

Lembre-se de definir um espaço para nome para cada class. Aqui está um exemplo de Acme \ Command \ HelloCommand:

 < ?php namespace Acme\Command; class HelloCommand { } 

Não se esqueça de include o carregador automático em seus controladores PHP:

 < ?php require 'vendor/autoload.php'; 

Leia mais sobre o padrão PSR-4 no PHP Framework Interoperability Group .

Observe que, se você editar composer.json , você precisa executar a instalação, a atualização ou a autenticação de despejo para atualizar os caminhos das classs do carregador automático.