Autoloading de classes com Composer

logo-composer-transparent

Vou mostrar neste post, como montar um autoloading de classes em PHP utilizando o Composer, uma ferramenta para gerenciamento de dependência em PHP. Para quem ainda não o conhece, vale a pena estudar sobre dele. O link da documentação está no final do post.

Passo a passo para criar o autoloading

1- Baixar o Composer para raíz do projeto.

curl -s https://getcomposer.org/installer | php

2- É necessário criar um arquivo composer.json para instalação do Composer. No bloco abaixo, insiro nome, descrição e autor do projeto.

    {
        "name": "Autoloading/Composer",
        "description": "Autoloading de bibliotecas com Composer",
        "authors": [
            {
                "name": "IgorDeveloper",
                "homepage": "http://www.igordeveloper.com"
            }
        ]
    }

3- Execute comando abaixo para instalar Composer no seu projeto.

$php composer.phar install

4- Após a instalação o diretório vendor é criado. Composer prepara um arquivo autoload que é capaz de carregar automaticamente todas as classes em qualquer uma das bibliotecas que ele baixa. Para criar uma classe que seja lida através do Composer, é necessário acrescentar mais informações ao arquivo composer.json, no bloco abaixo , o Composer irá registrar um autoloader para o namespace “Project” a partir do diretório src/Project.

    "autoload": {
       "psr-0": {"Project": "src/"}
    }

5- Para registrar o autoloader execute o comando update.

$php composer.phar update

6- Crie um diretorio “src/Project” e monte suas classes.

7- As classes devem usar o namespace Project, como o exemplo da classe Car.

namespace Project;

class Car
{
...

8- Na raíz, crie um arquivo index.php e inclua a seguinte linha para ter um autoloading das tuas bibliotecas criadas dentro de seu projeto.

$loader = require 'vendor/autoload.php';

9- O exemplo abaixo instância a classe Car

$a = new \Project\Car();

Github: https://github.com/igordeveloper/ComposerAutoloading
Para conhecer mais sobre o Composer acesse, http://getcomposer.org/

Até a próxima!

Tags: , ,

2 comentários para “Autoloading de classes com Composer”

  1. João Paulo disse:

    Muito bacana, é exatamente o que estava procurando, vlw

  2. Lembrando que a psr-0, foi depreciada, o “mais correto” seria utilizar a psr-4
    {
    {
    “autoload”: {
    “psr-4”: {
    “Namespace\\Name\\”:”pathParaONameSpace”
    }
    }
    }
    }

Deixe um comentário