Diego França

Como criar e publicar seu próprio pacote PHP no Packagist

Olá pessoal! Hoje quero compartilhar com vocês como criar e publicar pacotes PHP no Packagist. Você já criou um código PHP reutilizável e queria instalar em outro projeto sem a necessidade de ficar duplicando código e até compartilhar com a comunidade PHP?

Então, hoje vou criar um simples pacote e ensiná-los como publicar no packagist. O pacote que vou criar vai ser algo bem simples, um pacote que soma dois números e retorna o valor soma.

Neste tutorial, você vai aprender como:

  • Criar a estrutura de um pacote PHP.
  • Usar o Composer para gerenciar dependências.
  • Publicar no Packagist.org.

Estrutura inicial do projeto

Crie a estrutura de diretórios do seu pacote. Aqui está um exemplo básico:

package-soma/
├── src/
│   └── Calculadora.php
├── tests/
│   └── CalculadoraTest.php
├── composer.json
├── composer.lock
└── phpunit.xml

Configurando o Composer

Dentro da pasta do projeto, inicialize o composer.json com:

composer init

Esse comando inicia um assistente interativo. Preencha as informações solicitadas, como:

Nome: seunome/pacote-exemplo

Descrição: Uma breve descrição do que o pacote faz.

Tipo: Geralmente “library”.

Licença: Ex: MIT

Dependências: Pressione Enter para pular se não tiver dependências ainda.

Ao final, o Composer gerará o composer.json, com esse abaixo:

{
    "name": "dtgfranca/package-soma",
    "require": {
        "phpunit/phpunit": "^12.2"
    },
    "autoload": {
        "psr-4": {
            "Dtgfranca\\PackageSoma\\": "src/"
        }
    },
    "authors": [
        {
            "name": "Diego França",
            "email": "[email protected]"
        }
    ]
}

Escrevendo o código do pacote

No diretório src/, crie a classe principal do seu pacote.

src/Calculadora.php

<?php

namespace DtfFranca\PackageSoma;

class Calculadora
{
    public function somar(int $a, int $b): int
    {
        return $a + $b;
    }
}

Adicionando testes (opcional, mas recomendado)

Crie testes no diretório tests/ com o PHPUnit.

tests/CalculadoraTest.php

<?php

use PHPUnit\Framework\TestCase;
use DtfFranca\PackageSoma\Calculadora;

class CalculadoraTest extends TestCase
{
    public function testSomar()
    {
        $calc = new Calculadora();
        $this->assertEquals(4, $calc->somar(2, 2));
    }
}

Instale o PHPUnit se ainda não tiver:

composer require --dev phpunit/phpunit

E rode os testes com:

vendor/bin/phpunit

Publicando o nosso pacote no packagist

Agora que subimos para o git, vamos acessar o packagist.org. Ao acessar será mostrado a tela:

  1. Clique no menu “Submit” localizado na parte superior direita
  2. Adicione o link do repositório do pacote criado
  3. Clique em “Check”

Clique em “Submit” e seu pacote já se encontra no packagist para instalação:

Dicas adicionais

  • Se o pacote estiver com "minimum-stability": "dev", adicione também "prefer-stable": true no composer.json.
  • Faça tag (versão) no GitHub (ex: v1.0.0) para que o Packagist reconheça versões estáveis.
  • Inclua um README.md claro com instruções de uso.
  • Adicione uma licença (por exemplo, LICENSE com conteúdo da MIT).

Link do repositório:

https://github.com/dtgfranca/package-soma