PSR-4 a recomendação de autoload do PHP \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 21 Horas 

 19 Min 

 24 Seg 

   Tempo restante da oferta: 21 19 24 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) PSR-4 a recomendação de autoload do PHP  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

# PSR-4 a recomendação de autoload do PHP

 Nesse artigo falaremos de umas das PSRs mais importantes da linguagem PHP, a PSR-4, responsável por recomendações de autoload na linguagem. Venha conferir!!!

 [ Elton Fonseca ](https://www.treinaweb.com.br/blog/autor/elton-fonseca) 7 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/04/03104651/PHP-PSR4.png)  

Na [linguagem de programação PHP](https://www.treinaweb.com.br/blog/o-que-e-php/ "linguagem de programação PHP") temos uma série de recomendações chamadas PSRs. Elas são definidas por um grupo de desenvolvedores em conjunto com a comunidade. Nesse post vamos falar de uma das PSRs, a PSR-4 que visa padronizar o modo como carregamos os arquivos na linguagem de programação PHP.

 Caso não conheça o que é PHP-FIG, PSR, RFC e outros detalhes, aconselho leitura do artigo [O que são as PSRs do PHP](https://www.treinaweb.com.br/blog/o-que-sao-as-psrs-do-php/). 

## Porque criar uma padronização como a PSR-4 para autoload

Uma aplicação PHP por menor que seja precisa ser dividida em vários arquivos para manter a organização. Os arquivos consequentemente precisam ser incluídos para que o código dentro dele possa ser usado. Com esse intuito usamos o que chamamos em PHP de autoloading, que basicamente é uma lógica para carregar nossos arquivos automaticamente.

O problema é que cada projeto implementava uma lógica diferente para carregar os arquivos e também para estrutura de pastas onde esses arquivos eram colocados. E como já falamos no artigo sobre **o que são PSRs**, quando cada projeto ou empresa usa um padrão temos vários problemas. Além disso, nem sempre reinventar a roda é uma boa ideia quando falamos de programação, muitas vezes o modo como era feito não era o melhor.

Pensado em uma padronização única de carregamento o PHP-FIG criou a [PSR-0](https://www.php-fig.org/psr/psr-0/ "PSR-0") que com o tempo acabou sendo descontinuada e a PSR-4 passou a ser indicada em seu lugar.

## Porque seguir a PSR-4

A PSR-4 vai de encontro ao desenvolvimento moderno de aplicações PHP e possui tudo que o desenvolvedor precisa para trabalhar com orientação a objetos. Ela foi pensada para funcionar com namespace e facilitar que o projeto atenda outras recomendações, como por exemplo a [PSR-1](https://www.treinaweb.com.br/blog/psr-1-conheca-os-padroes-basicos-de-codificacao-do-php/ "PSR-1").

O PSR-4 pode ser facilmente utilizado com autoload do composer, além de ser o padrão adotado pelos [principais frameworks PHP do mercado](https://www.treinaweb.com.br/blog/os-principais-frameworks-php/ "principais frameworks PHP do mercado"), como:

- [Laravel](https://www.treinaweb.com.br/blog/o-que-e-laravel/ "Laravel")
- [Symfony](https://www.treinaweb.com.br/blog/o-que-e-symfony/ "Symfony")
- [Doctrine](https://www.treinaweb.com.br/blog/conheca-os-principais-projetos-do-doctrine/ "Doctrine")
- [Slim](https://www.treinaweb.com.br/blog/o-que-e-o-slim-framework/ "Slim")

Devido a maioria dos projetos atuais do mercado utilizarem PSR-4, quando um novo desenvolvedor entrar no projeto, provavelmente ele já conhecerá a recomendação e começará produzir mais rápido.

## Namespace e estrutura de pastas na PSR-4

Se olharmos o namespace de uma classe e o caminho de um arquivo no sistema operacional vamos ver que eles são extremamente parecidos:

Por exemplo, no linux poderíamos ter o caminho de um arquivo assim: `Treinaweb/Recursos/Curso.php` e no PHP um namespace igual abaixo:

```php
