PHPackages                             jonathanbandeira/exemple - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. jonathanbandeira/exemple

ActiveLibrary

jonathanbandeira/exemple
========================

teste

1.2(3y ago)011mitPHP

Since Mar 20Pushed 3y ago1 watchersCompare

[ Source](https://github.com/jonathanbandeira/treina-docker)[ Packagist](https://packagist.org/packages/jonathanbandeira/exemple)[ RSS](/packages/jonathanbandeira-exemple/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)DependenciesVersions (3)Used By (0)

Docker, PHP Built-In Server, Composer, Geradores de Documentação e Testes
=========================================================================

[](#docker-php-built-in-server-composer-geradores-de-documentação-e-testes)

Docker
------

[](#docker)

Docker é uma plataforma de virtualização open source que permite a criação, implantação e execução de aplicações usando containers. Os containers permitem que você embale seu software junto com todas as partes de que ele depende, incluindo bibliotecas, sistemas operacionais e outras dependências. Isso significa que você pode ter certeza de que sua aplicação funcionará exatamente da mesma maneira, independentemente do ambiente onde ela está sendo executada.

Para mais informações ou para acessar o link de download verifique o site oficial do Docker .

### Utilizando Docker no VS Code

[](#utilizando-docker-no-vs-code)

- Instale a extenção Dev Container no VS Code
- Crie uma pasta .devcontainer contendo os arquivos Dockerfile e devcontainer.json
- No menu lateral do VS Code está o icone da extensão Dev Container onde é possíve abrir gerênciar (criar, pausar, abrir) containers e diretórios em um container. Opcionalmente, ao abrir um diretório de um projeto com a pasta .devcontainer previamente configurada, o VS Code irá sugerir que esta seja reaberta no container.
- Acesse os arquivos via terminal do VS Code

OBS.: No primeiro acesso ao container, será feito um processo de instalação e configuração deste que poderá levar alguns minutos.
OBS.: Utilize git fora do container. Apesar de ser possível utilizar no container, será necessário configurar chaves ssh, mas como o projeto está versionado e pode ser clonado em diversas estações de trabalho, não é recomendável salvar as credenciais do git.

### Arquivos de configuração do Docker

[](#arquivos-de-configuração-do-docker)

- O arquivo devcontainer.json configura o container dentro do VS Code, habilita/desabilita o uso de outras extenções e o envelopamento do diretório dentro do volume virtualizado no container

```
{
	"name": "PHP",
	"build": {
		"dockerfile": "Dockerfile",
		"args": {
			"VARIANT": "8.1",
			"NODE_VERSION": "none"
		}
	},
	"customizations": {
		"vscode": {
			"settings": {
				"php.validate.executablePath": "/usr/local/bin/php"
			},
			"extensions": [
				"xdebug.php-debug",
				"bmewburn.vscode-intelephense-client",
				"mrmlnc.vscode-apache"
			]
		}
	},
	"forwardPorts": [8080],
	"remoteUser": "vscode"
}
```

- O arquivo Dockerfile contém as especificações do container e pode ser utilizado em qualquer ambiente configurado com docker, inclusive no servidor em produção.

```
ARG VARIANT="8.1-apache-bullseye"
FROM mcr.microsoft.com/vscode/devcontainers/php:0-${VARIANT}

ARG NODE_VERSION="none"
RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi

RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
     && apt-get -y install --no-install-recommends wget graphviz \
     && wget https://phpdoc.org/phpDocumentor.phar \
     && chmod +x phpDocumentor.phar \
     && mv phpDocumentor.phar /usr/local/bin/phpDocumentor \
     && echo xdebug.mode=coverage >> /usr/local/etc/php/conf.d/xdebug.ini

```

OBS.: O container acima é fornecido pela Microsoft e consiste de um ambiente linux com instações de PHP e Node, além de configurações adicionais feitas através de comandos unix para instalação de dependências a nível de SO e configurações do PHP Documentor e Xdebug em modo de cobertura.

PHP Built-In Server
-------------------

[](#php-built-in-server)

O PHP Built-in Server é um servidor web embutido em uma versão específica do PHP, a partir da versão 5.4. Ele permite que desenvolvedores iniciem rapidamente um servidor de desenvolvimento local, sem a necessidade de instalar e configurar outros servidores como Apache ou Nginx. O servidor embutido só deve ser usado para fins de desenvolvimento e não para ambientes de produção.

Para iniciar o servidor acesse o diretório público via terminal e digite o seguinte comando:

```
php -S localhost:8888

```

Após acesse a url no navegador.

OBS.: Utilize qualquer porta alta, não é obrigatório utilizar a 8888 e evite utilizar a 8080 pois o VS Code a utiliza para tunelamento.

### Disponibilizando acesso ao Built-In Server com Ngrok

[](#disponibilizando-acesso-ao-built-in-server-com-ngrok)

Ngrok é uma ferramenta que permite criar um servidor seguro para testar seus aplicativos e serviços hospedados localmente. Ele cria um túnel que expõe seu servidor local à Internet pública, permitindo que seja acessível de qualquer lugar, enquanto mantém seu IP e a porta local privados. Ele é usado para fins de desenvolvimento, testes, demonstrações e outras aplicações.

Cadastre-se no site  e após ligar seu Built-In Server abra outro terminal e digite o seguinte comando:

```
ngrok http 8888

```

OBS.: O terminal ficará travado na apliação do Ngrok que fornecerá um link público para disponibilização do acesso ao seu ambiente de desenvolvimento.

Composer
--------

[](#composer)

### O que é?

[](#o-que-é)

O Composer é um gerenciador de dependências para o PHP. Ele é usado para gerenciar as dependências do seu projeto, como bibliotecas, frameworks e outras ferramentas. O Composer permite que você crie seu projeto de forma fácil e rápida, mantendo o seu código sempre atualizado e acessível.

### Acesso a documentação

[](#acesso-a-documentação)

### Instalação

[](#instalação)

### Onde encontrar pacotes PHP instaláveis via Composer

[](#onde-encontrar-pacotes-php-instaláveis-via-composer)

- Site oficial para download de repositórios -
- Repositório no GitHub que mantem lista das melhores e mais utilizadas bibliotecas em várias áreas -

### Como iniciar um projeto com Composer?

[](#como-iniciar-um-projeto-com-composer)

```
composer init
```

Em seguida responda as perguntas e configure seu composer.json.

Você também pode criar o arquivo composer.json manualmente.

### Principais comandos

[](#principais-comandos)

- init - Inicializa um projeto com o composer
- install ou i - Instala todas as dependências
- update ou u - Atualiza todas as dependências
- clear-cache - Limpa o cache do Composer
- dumpautoload -o - Atualiza o classpath do autoload PSR-0 e PSR-4

### Principais propriedades presentes no composer.json

[](#principais-propriedades-presentes-no-composerjson)

- name: Utilizando o formato \[vendor/name\], especifica o nome do distribuidor e o nome do projeto
- description: Descrição do projeto
- type: Tipo do projeto podendo ser library, project ou metapackage
- version: Versão do projeto, utilizando formato numérico comumente com grandes e pequenas versões
- autoload: Especifica um classpath para carregamento de classes ou arquivos utilizando apenas o autoload do composer
- require: Lista de todas as dependências do projeto
- scripts: Lista de funções, atalhos e scripts de uso geral utilizados via composer

OBS.: O autoload e o require possuem propriedades semelhantes com o sufixo dev, onde ficam armazenadas definições válidas apenas para o ambiente de desenvolvimento. Para instalar as dependências sem carregar os recursos de desenvolvimento utilize o comando a seguir:

```
composer install --no-dev

```

Exemplo de arquivo composer.json completo

```
{
    "name": "senaces/sig-integration",
    "type": "project",
    "description": "SENAC | ES",
    "authors": [
        {
            "name": "Felipe Gaspar"
        }
    ],
    "autoload": {
        "psr-4": {
            "Senac\\Cron\\": "scripts/",
            "Senac\\Services\\": "src/integration/",
            "WebApp\\Platform\\Core\\Utils\\": "src/utils",
            "WebApp\\Platform\\Core\\Database\\": "src/database",
            "WebApp\\Platform\\OpenApi\\Senac\\": "src/api/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Test\\UnitTest\\": "tests/unit"
        }
    },
    "require": {
        "php": "^8",
        "symfony/yaml": "^5.3",
        "guzzlehttp/guzzle": "^7.0",
        "monolog/monolog": "^3.2",
        "symfony/mailer": "^6.1",
        "symfony/mime": "^6.1",
        "phuml/phuml": "^6.1",
        "code-simplify/ciesta-project": "^0.0.1"
    },
    "require-dev": {
        "phpunit/phpunit": "^9",
        "codeception/codeception": "^5.0",
        "codeception/module-asserts": "^3.0",
        "phpmetrics/phpmetrics": "^2.8",
        "phpunit/php-code-coverage": "^9",
        "rregeer/phpunit-coverage-check": "^0.3.1"
    },
    "scripts": {
        "clear": [
            "rm -f composer.lock",
            "@composer clear-cache"
        ],
        "code-coverage": "codecept run --coverage",
        "code-coverage-details": [
            "codecept run --coverage --coverage-html",
            "mv reports/coverage docs"
        ],
        "unit-test": "codecept run unit",
        "test-application": [
            "@code-coverage"
        ],
        "build-application": [
            "@clear",
            "@composer install",
            "@test-application"
        ],
        "doc": [
            "rm -rf docs",
            "mkdir docs",
            "mkdir docs/metrics",
            "mkdir docs/code",
            "mkdir docs/class",
            "mkdir docs/coverage",
            "vendor/bin/phpmetrics --report-html=docs/metrics src",
            "phpdoc -d src/ -t docs/code",
            "vendor/bin/phuml phuml:diagram -r -a -i -o -e php -p dot src/ docs/class/diagram.png",
            "@code-coverage-details"
        ]
    },
    "scripts-descriptions": {
        "clear": "Limpa o cache de dependências e o arquivo composer.lock",
        "code-coverage": "Executa o teste de cobertura de código com saida pelo console",
        "code-coverage-details": "Gera um relatório completo do teste de cobertura de código em formato HTML",
        "code-coverage-test": "Verifica o sucesso da cobertura de código com base em um parâmetro numérico especificado",
        "unit-test": "Executa os testes unitários utilizando o framework PHPUnit",
        "test-application": "Executa todas as rotinas de testes configuradas. OBS.: Habilite apenas as rotinas implementadas",
        "build-application": "Limpa o cache e instala as dependências, e em seguida executa todas as rotinas de testes configuradas",
        "doc": "Gera a documentação completa do projeto"
    }
}
```

### composer.lock e vendor

[](#composerlock-e-vendor)

O arquivo composer lock contém a referência para todas as instalações efetuadas no ambiente, incluindo a informação das versões instaladas de cada biblioteca agindo como uma referência para o composer preservar as mesmas versões especificadas.

Já o diretório vendor contém os códigos-fonte de todas as bibliotecas instaladas, o classpath do autoload e scripts binários. É a base para o carregamento de projetos que utilizam composer. Para utilizá-lo basta carregar o arquivo /vendor/autoload.php em qualquer arquivo de seu projeto.

É bem comum não guardar ambos os arquivos durante o versionamento. Para fácilitar este gerênciamento, utilize o arquivo .gitignore especificando os paths da raiz do projeto até todo e qualquer arquivo e diretório que queira manter fora do controle de versão.

### Criando scripts para execução com composer

[](#criando-scripts-para-execução-com-composer)

Neste exemplo trabalharemos com um script para limpeza do cache e dos arquivos do composer

1. Crie a seção script como no exemplo abaixo:

```
"scripts": {

},
```

2. Adicione a chave "clear" e atribua no formato json um array vazio
3. Adicione o comando unix "rm -f composer.lock" utilizando as aspas e ao final coloque a virgula. (O composer aceita quaisquer comandos unix e comandos php através da flag -r. Ex.: php -r "echo 'teste';";)
4. Adicione o comando "@composer clear-cache". Para utilizar comandos composer nos seus scripts basta referenciá-los com o @ antes da palavra reservada composer
5. Teste o seu script com o comando a seguir:

```
composer clear

```

### Atividade

[](#atividade)

Agora crie um comando com o nome "build-app" que limpe seu ambiente e instale todas as dependências

Criando sua primeira biblioteca com composer
--------------------------------------------

[](#criando-sua-primeira-biblioteca-com-composer)

1. Crie seu composer.json utilizando o composer init
2. Crie um arquivo dentro da pasta /src com o nome Conexao.php
3. Copie o código abaixo dentro deste arquivo:

```
