2012-09-03 8 views
19

Comencé un nuevo proyecto, donde uso Composer para manejar algunas dependencias, así como su carga automática.¿Gestión de código personalizada con el autocargador Composer?

Solo guardo el archivo composer.json en el VCS, en lugar de todo el directorio del proveedor, así que no quiero comenzar a agregar mi código allí.

¿Cómo debo manejar mi propio código específico de proyecto, para que también se cargue automáticamente?

Respuesta

39

Esto es realmente muy simple. Excluir el directorio de proveedores de su repositorio es el enfoque correcto. Su código debe almacenarse en un lugar separado (como src).

utilizar la propiedad autoload para hacer que el compositor reconoce el espacio de nombres (s):

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

Asumiendo que tiene nombres de las clases siguientes de la norma PSR-4, que debería funcionar. A continuación algunos ejemplos de nombres de clases y sus ubicaciones en el sistema de archivos:

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

Recuerde definir un espacio de nombres para cada clase. Aquí está un ejemplo de Acme \ Command \ HelloCommand:

<?php 

namespace Acme\Command; 

class HelloCommand 
{ 
} 

No se olvide de incluir el cargador automático de los controladores PHP:

<?php 

require 'vendor/autoload.php'; 

Leer más en PSR-4 standard on PHP Framework Interoperability Group.

Tenga en cuenta que si edita composer.json, debe ejecutar instalar, actualizar o dump-autoload para actualizar las rutas de clases del autocargador.

+2

¿Alguna posibilidad de que publique actualizar la respuesta con ejemplos de código simple con una clase ficticia o dos? A pesar de leer la documentación a la que vinculó y comparar mi directorio/espacio de nombres con los utilizados en el proveedor /, no puedo cargar mis clases. – Letharion

+3

@Letharion actualizó mi respuesta, con suerte esto ayudará. –

Cuestiones relacionadas