Fork me on GitHub

Bem Vindo(a)

Aviso Legal: Maioria dos ativos, design e formato deste site é emprestado (bifurcado pode ser o termo mais adequado) do site original PHP : The Right Way. Aos contribuidores originais é dado todos os créditos à eles.

Este site serve como um guia para aqueles que estão usando o Laravel Framework por Taylor Otwell e seus colaboradores. Laravel: As Melhores Práticas têm como objetivo reunir todos os recursos e melhores práticas no uso do Laravel Framework.

O Laravel Framework não é estrito em como e onde você define suas classes, desde que possa ser carregado pelo Composer. Esta é uma lâmina de dois gumes, é benéfica para desenvolvedores avançados, mas pode ser confusa para iniciantes e para aqueles que estão tentando fazer engenharia reversa de uma base de código existente. A capacidade de colocar qualquer coisa, em qualquer lugar é boa. Mas há momentos em que alguns métodos são muito melhores que os outros, e é isso que buscamos. Este site tentou coletar todas as melhores práticas, ferramentas e metodologias, para que ele pudesse servir como um guia para iniciantes e desenvolvedores existentes.

Este é um documento vivo e continuará sendo atualizado com informações e exemplos mais úteis à medida que forem disponibilizados.

Traduções

Laravel: As Melhores Práticas está atualmente disponível nos seguintes idiomas. Por favor, contribua para o projeto para que ele possa suportar vários idiomas.

Como Contribuir

Ajude a tornar este site o melhor recurso para novos programadores PHP! Ajude no GitHub

Espalhe a Palavra!

Laravel Boas Praticas tem imagens de banner da web que você pode usar em seu site. Mostre seu apoio e deixe que novos desenvolvedores PHP sabe onde encontrar boas informações!

Veja os Banners

Baixe o Aplicativo Android

Procure na Google Play

Back to Top

Começando

O Ecossistema

No mínimo, você precisa saber usar Git e Composer. Embora não seja obrigatório, é melhor que você tenha uma conta no GitHub.com, é onde todo o código e suas dependências são hospedadas.

Para o desenvolvimento local, você precisará ter pelo menos Vagrant e VirtualBox instalados. Isto é usado por Homestead (Uma caixa especial Vagrant para rodar aplicações Laravel). Embora você possa usar a pilha tradicional de WAMP / MAMP / XAMPP, eles não são oficialmente suportados, portanto, você pode ter dificuldades ao longo do caminho.

O puro “caminho Laravel” para desenvolvimento frontend pode ser assustador, pois tem uma longa cadeia de tecnologias. No topo da cadeia está Elixir, que é basicamente uma API para GulpJS, que por sua vez requer npm que é basicamente um gerenciador de pacotes para o NodeJS.

CSS é gerenciado através de Sass ou LESS, enquanto JavaScript através de CoffeeScript. Você pode escrever códigos ES6/ES7 desde que sejam suportados pelo Elixir BabelJS. Enquanto as dependências NodeJS são disponibilizadas aos navegadores pelo Browserify.

Para a pilha de backend, no mínimo, você precisa de um servidor web como Nginx, um interpretador PHP como PHP-FPM e um banco de dados como MySQL. Outros componentes opcionais são Memcached, Redis e Beanstalkd.

Enquanto você não é obrigado a entendê-los todos de uma vez, é vantajoso que você esteja, pelo menos, familiarizado com estes e faça algumas leituras sobre o que eles são e onde eles estão sendo usados. Isso economizará toneladas de confusão ao ler a documentação e as referências no futuro.

Use a versão estável (5.4)

Se você está iniciando com Laravel, começe com uma versão estável dele Laravel 5.4. Laravel adicionou poderosas características nos últimos anos. Se você estiver procurando por uma função ou seu uso, a documentação no site terá a resposta laravel.com/docs.

Homestead

O Laravel não está apenas usando o Vagrant como o ambiente oficial de desenvolvimento, mas também tem sua própria caixa de base chamada “Homestead”. ocê pode usar o Homestead para começar a desenvolver com o Laravel sem o incômodo de configurar seu ambiente local para o Laravel.

As instruções e uso do homestead podem ser encontradas no Official Documentation.

Construa seu próprio Homestead

Homestead vem com software pré-instalado. Se você quiser personalizar o software instalado, precisará ter acesso aos scripts usados ​​para criar o próprio Homestead. Este projeto é chamado “Settler”. Você pode verificar o código-fonte desse projeto para ter uma melhor compreensão de como o Homestead foi criado e, provavelmente, também adicionar seus próprios scripts.

Back to Top

Guia de Estilo de Código

O framework Laravel em si não impõe padrões sobre como você deve nomear suas variáveis ​​ou onde colocar arquivos. Contanto que possa ser carregado pelo Composer, ele será executado tecnicamente dentro do aplicativo. No entanto, os desenvolvedores são incentivados a estudar e seguir os seguintes padrões PSR:

Back to Top

Destaques do Framework

Paradigmas da Programação

Padrões de Projeto

Existem vários padrões de design que fortalecem o Laravel. Phill Sparks tem uma apresentação maravilhosa sobre isso.

Como o Laravel trabalha?

Christopher Pitt tem uma explicação impressionante do funcionamento interno do Laravel, você pode conferir em http://rebuildinglaravel.com/

Eloquent ORM

A característica mais popular do Laravel é seu ORM, sua estrela do rock, chamado Eloquent. É a maneira mais fácil de usar um ORM em seu aplicativo. Você pode ler mais sobre Eloquent no official documentation.

Interface de Comando de Linha

Laravel vem com sua própria interface de linha de comando chamada Artisan. Basicamente usa componentes do Symfony Console como sua fundação. Laracasts tem bons tutoriais na compreensão de como os comandos funcionam e como criar os seus próprios.

Debugging

A página de erros do Laravel é algo que é bastante conhecido, graças ao Whoops library que alimenta a página de erros que você vê sempre que há um erro.

Observe que a biblioteca Whoops foi removida do Laravel 5.

Back to Top

Gerenciamento de Dependências

O Laravel não é construído do zero. Ele é construído sobre vários frameworks e bibliotecas. Você pode ver a lista de outras bibliotecas que usa aqui. Também é alimentado por componentes Illuminate. Todos esses componentes são combinados, garantindo que cada um deles possa ser tratado e escrito com o composer Biblioteca Composer. Essas bibliotecas estão hospedadas em repositórios públicos.

Composer e Packagist

Por padrão, o Packagist é usado como um repositório de pacotes e o GitHub para baixar os arquivos em si. Mas você pode definir seus próprios repositórios configurando os espelhos de pacotes, Satis. Embora você possa usar qualquer classe ou funções simples do PHP dentro do Laravel (contanto que ele possa ser carregado automaticamente). Essa não é uma pratica recomendada. Faça sua própria Biblioteca Composer para cada conjunto específico de classes de aplicativo e incluí-lo como uma dependência no arquivo composer.json.

Registros dos pacotes Laravel

Estes são os sites onde você pode encontrar Pacotes Laravel:

Back to Top

Práticas de Codificação

O básico

O Laravel tem vários recursos que podem ser impressionantes no começo.

Aqui estão alguns artigos e recursos que podem ser úteis para entrar na mesma página com o Laravel.

Data e hora

Embora o PHP tenha uma classe chamada DateTime para ajudá-lo a ler, escrever, comparar e calcular com data e hora. Recomenda-se que você use o Carbon library para lidar com datas.

Padrões de Projeto

É fácil bagunçar sua aplicação Laravel se você não tiver nenhum tipo de padrão a seguir. Os seguintes padrões de projeto são recomendados para aqueles que estão criando um aplicativo com o Laravel ou querem refatorar seus projetos existentes:

Trabalhando com UTF-8

Laravel usa o patchwork/utf8 para a maioria de suas coisas relacionadas ao UT8. É necessário que todos os desenvolvedores entendam os seguintes conceitos:

Back to Top

Convenções de banco de dados

O Eloquent pode suportar múltiplos bancos de dados por um motivo - não se limite ao MySQL.

Use MongoDB para registros que possuem atributos que variam muito. Por exemplo, em um sistema de inventário, um produto de material de escritório pode ter um conjunto diferente de campos em comparação com suprimentos de veículo e de automóvel.

Use ElasticSearch para pesquisa e indexação de dados de alto volume.

Use Neo4J para aplicativos que exigem relacionamentos complexos entre modelos. Por exemplo, um aplicativo de rede multinível, site de rede social e aplicativos semelhantes.

Nomenclatura de tabela e campo

Os nomes de tabelas e campos DEVEM estar em minúsculas e usar Snake Case.

Nomes de tabelas devem usar a forma plural do objeto real que estão armazenando. Como por exemplo, o nome da tabela para postagens do blog deve ser * posts * not * post *.

Chaves primárias devem ser nomeadas “id” nos nomes das tabelas. Enquanto a chave estrangeira que representa em outra tabela deve estar no id de forma singular. (i.n. tabela: post, chave primária: id, chave estrangeira: post_id)

Alterar tabelas, indexar ou inserir dados de amostra.

NÃO crie tabelas ou indexe diretamente via PHPMyAdmin ou console. Use database migration para criar tabelas, adicionar / alterar campos e enviá-los para o repositório Git.

NÃO passe diretamente a exportação do banco de dados (arquivos sql) para seus colegas para compartilhar suas alterações no banco de dados. Deixe-os executar os arquivos de migração que você confirmou no repositório.

Não insira valores falsos diretamente no banco de dados para fins de teste. Construa Seeder, arquivos para preencher seu banco de dados.

Escolha o banco de dados certo para o trabalho em questão.

O Eloquent pode suportar múltiplos bancos de dados por uma razão - não se limite ao MySQL.

Use MongoDB para registros que possuem atributos que variam muito. Por exemplo, em um sistema de inventário, um produto de material de escritório pode ter um conjunto diferente de campos em comparação com suprimentos de veículo e de automóvel.

Use ElasticSearch para pesquisa e indexação de dados de alto volume. Também é útil em sistemas que exigem fragmentação de dados em várias máquinas, o que é muito grande para caber em uma única réplica.

Use Neo4Jpara aplicativos que exigem relacionamentos complexos entre modelos. Por exemplo, um aplicativo de rede multi-nível, site de rede social e similares. Embora você possa fazer o mesmo no MySQL, a quantidade de junções quando você vai além dos relacionamentos pai-filho de 2 níveis será insuportável em qualquer ambiente de produção.

Back to Top

Configurando

Certifique-se sempre de que a sua chave de aplicativo esteja configurada. Esta é a variável APP_KEY no seu arquivo .env. Você pode gerar um via

php artisan key:generate

Sempre dê um nome ao seu aplicativo. Ou seja, em vez de usar o namespace raiz App padrão fornecido pelo Laravel install, defina-o como o aplicativo é. Isso pode ser definido via

php artisan app:name YourAppName

Isso faz com que seus controllers/models resolvam em YourAppName\Controllers e YourAppName\Models.

Use arquivos .env para armazenar qualquer informação segura e recuperá-la através da função getenv. Estas não devem ser nenhuma instância na qual você irá colocá-lo dentro de models/controllers e enviá-lo para o Git;

Back to Top

Recursos

Da fonte

Pessoas para seguir

Mentoria

Fornecedores do PHP PaaS

Componentes

Os componentes Illuminate podem ser encontrados em https://github.com/illuminate

são as partes menores que compõem o Laravel Framework. Várias outras bibliotecas de código aberto são usadas pelo Laravel, que pode ser visto em seu arquivo composer.json https://github.com/laravel/framework/blob/5.0/composer.json#L22-L43

Outros Recursos Úteis

Laracasts

Kits Iniciais

Canais no Youtube

Vídeos pagos

Livros

Back to Top

Comunidades

Grupos de Usuários

Conferências

Back to Top