2. 2
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
SOBRE MIM
Olá!MeunomeéKildersonSenaesoudesenvolvedor
PHP desde 2005. Conheci esse maravilhoso framework
em meados de 2009/2010 depois de ter passado por
inúmeros outros, como: Zend Framework, CodeIgni-
ter, Symfony e CakePHP. Naquela época, todos esses
frameworks me satisfaziam em alguns pontos, po-
rém em outros, deixava muito a desejar (só não per-
guntem o que era porque eu não lembro =D).
Depois que eu conheci o Yii, na época em sua versão 1,
fiquei totalmente apaixonado com o grande ganho de produtividade, sua se-
gurança, arquitetura bem diferenciada e, principalmente, a alta performance!
A partir deste momento comecei a utilizá-lo em todos os meus proje-
tos e indicar para amigos desenvolvedores. Na sua versão 2.x só acentua-
ram-se ainda mais os quesitos apontados acima, me deixando ainda mais
“caído” por esse framework.
Queria dividir com vocês esses mais de 3 anos de experiência com o
Yii Framework 2.x, mostrando 8 motivos para você começar a utilizar esse
framework em seus projetos.
Mas ANTES… Quero te mostrar onde você pode me encontrar:
Blog: yiiacademy.com.br
Facebook: facebook.com/kilderson.sena
Canal no Youtube: youtube.com/yiiacademybr
Twitter: @derson_sena
GitHub: dersonsena
Linkedin: Kilderson Sena
Grupo no Telegram: https://t.me/yiibrasil
Ahh! Também sou membro e faço parte da
Organização da Comunidade PHP aqui do Ceará,
a comunidade: PHP com Rapadura
3. 3
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
UMPOUCOSOBREOYII
Antes de falar sobre o Yii Framework, quero mostrar os endereços do
site e redes sociais oficiais:
Site Oficial: http://www.yiiframework.com
Repositório Oficial: https://github.com/yiisoft/yii2
Facebook: https://www.facebook.com/groups/yiitalk
Twitter: @yiiframework
QUEM FOI O GRANDE IDEALIZADOR DESSE FRAMEWORK?
O nome dele é Qiang Xue. Em meados de 2004 ele
foi um dos líderes do Prado Framework (inspirado
pela Apache Tapestry, Borland Delphi e Microsoft
ASP.NET) e hoje é o grande líder do Yii Framework.
Naquela época, a Zend realizou uma competição
chamada “gophp5” para promover o recém-lança-
do PHP 5.0. Qiang re-implementou o Prado no PHP
5 e simplesmente ganhou a competição
DEFINIÇÃO
Abaixo segue a definição do Yii segundo o site Oficial:
“Yii é uma estrutura de PHP baseada em compo-
nentes de alto desempenho para o rápido desenvol-
vimento de aplicativos da Web modernos. O nome
Yii significa ‘simples e evolutivo’ em chinês. Também
pode ser pensado como um acrônimo para Yes It Is!”
FONTE: Site Oficial Yii
4. 4
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
A descrição oficial por si só já descreve bem o intuito desse camarada.
Para complementar a descrição oficial, o Yii Framework tem o slogan:
“The Fast, Secure and Professional PHP Framework”
Tradução: “O framework PHP rápido, seguro e profissional”
O Yii é um framework muito bem projetado, com uma arquitetura
bem definida, usa design patterns quando necessário e tem uma enorme
facilidade de ser extendido.
Vocês puderam perceber que suas premissas são bem ambiciosas!
Fiquem comigo até o final do E-book, e tenho certeza que no final dele
você ficará com vontade de pelo menos instalá-lo para fazer os seus testes.
Vocês não aguentam mais tanto blá blá blá não é? Tá bom, tá bom!
Vamos deixar de teoria e vamos partir para o que interessa!
5. 5
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
1. FÁCIL INSTALAÇÃO
Você tem 2 formas de instalar o Yii framework:
1. Fazendo o download do framework direto do site;
2. Instalação via Composer (Extremamente recomendado);
Neste E-book, vou abordar somente a instalação via composer, pois é
a forma mais recomendada de se fazer. Considerando que você já tenha o
php e o composer instalados e configurados em sua máquina, para instalar
o yii framework em seu ambiente basta digitar o seguinte:
composer global require "fxp/composer-asset-
plugin:^1.3.1"
composer create-project --prefer-dist yiisoft/yii2-
app-basic seu-app
O primeiro comando instala um pacote/plugin do composer que te
ajuda gerenciar não só os pacotes do composer, mas também os pacotes
do bower e do npm. Ou seja, caso você queira adicionar também pacotes
do bower e/ou npm, basta registrar o pacote no seu composer.json no for-
mato abaixo:
"require": {
...
"bower-asset/nome-do-pacote-bower" : "*",
"npm-asset/nome-do-pacote-npm" : "*",
...
}
O segundo comando vai de fato fazer a instalação do Yii dentro do di-
retório "seu-app". Não se preocupe, caso não exista o diretório "seu-app", o
próprio comando de criação de projetos cria automaticamente ele para você.
6. 6
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
Terminado todo processo de instalação, basta abrir o seu terminal, en-
trar no diretório "seu-app" e digitar o comando:
php yii serve
E pronto! Dessa forma você já instalou uma aplicação utilizando um
template básico do Yii Framework 2! Você já pode testar sua aplicação no
seu navegador pela URL:
http://localhost:8888
Vocêdeveverumapáginacomumtítulobemgrande:"Congratulations".
Caso você não veja a tela acima ou por acaso ocorra algum erro na
página, você deve verificar os pré-requisitos básicos para uso do Framework.
Para isso basta copiar o arquivo "seu-app/requirements.php" para "seu-app/
web/requirements.php" e abrir no seu navegador:
http://localhost:8888/requirements.php
7. 7
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
Este script vai te mostrar uma lista do que a versão do seu PHP precisa
para poder rodar o Yii Framework.
IMPORTANTE: você deve ter pelo menos a versão PHP 5.4 ou superior
no seu ambiente, porém, o ideal é o PHP 7 em sua versão mais recente.
Caso você queira ver uma instalação do Yii2 com mais detalhes na prá-
tica, assista esse vídeo do meu canal:
8. 8
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
Caso você queira ver ainda mais detalhes sobre a instalação do Yii Fra-
mework, basta entrar na página de instalação da documentação oficial:
http://www.yiiframework.com/doc-2.0/guide-start-installation.html
2. DOCUMENTAÇÃO
SUPIMPA =)
A Organização e detalhamento dos componentes, classes, atributos,
métodos do Yii Framework é uma coisa de deixar muitos outros Frameworks
no chinelo. Você pode acessar a documentação oficial dele no endereço:
http://www.yiiframework.com/doc-2.0
Fora a ótima organização, layout muito agradável, o Yii Framework
também tem uma série de guias práticos sobre as principais funcionalida-
des que o framework oferece. Você pode ver esse guia no endereço:
http://www.yiiframework.com/doc-2.0/guide-README.html
9. 9
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
3. TUDO AQUI É
COMPONENTE
Os Componentes no Yii2 nada mais são do que services locators. Eles
guardam um conjunto de "componentes de aplicação" que fornecem dife-
rentes serviços.
Você pode ver que no arquivo de configuração da aplicação (/seu-app/
config/web.php) você terá um array dos "componentes registrados" quan-
do a aplicação for iniciada:
$config = [
...
'components' => [
'request' => [...],
'cache' => [...],
'user' => [...],
'errorHandler' => [...],
'mailer' => [...],
'log' => [...],
'db' => [...],
],
...
];
Nota: os detalhes de configurações dos componentes foram omitidos
apenas para que fique mais limpo e claro o entendimento.
Cada chave do array "components" representa a configuração de um
Componente de Aplicação do Yii Framework. Seguindo essa linha de ra-
ciocínio: a chave "log" representa o componente para geração de logs da
aplicação; A chave "db" representa o componente de conexão com a base
de dados; a chave "mailer" representa o componente de envio de e-mails e
assim sucessivamente.
10. 10
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
TUDO BEM, EU REGISTREI TODOS ESSES COMPONENTES...
MAS COMO EU UTILIZO ELES?
Muito simples! Para utilizar os componentes de Aplicação basta fazer:
// Formato: Yii::$app->nome_do_componente
$request = Yii::$app->request; // Chamando
componente Request
$cache = Yii::$app->cache; // Chamando o componente
de Cache
$db = Yii::$app->db; // Chamando o componente de
Conexao com o BD
MUITO LEGAL, MAS EU POSSO CRIAR COMPONENTES
CUSTOMIZADOS?!
Claro que sim! Caso você queira ver mais detalhes da utilização de
componentes de aplicação do Yii e também como criar o seu próprio com-
ponente na prática, assista esse vídeo do meu canal:
E caso você queira estudar mais a fundo os componentes basta entrar na
página Application Components da documentação oficial do Yii Framework:
http://www.yiiframework.com/doc-2.0/guide-structure-application-com-
ponents.html
11. 11
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
4. BAITA GERADOR DE
CÓDIGOS: O FAMOSO GII!
O GII é uma das várias extensões oficiais do Yii Framework. Porém esse
aqui a gente tem que dá um destaque maior pelo o que ele faz. Esta exten-
são fornece um ótimo gerador de código. Você pode usar o Gii para gerar
models, formulários, módulos, CRUD's e etc.
Ele fornece uma interface baseada na Web para gerar de forma inte-
rativa o código desejado. Ele também fornece uma interface de linha de
comando para desenvolvedores que preferem trabalhar com console.
Veja abaixo a tela inicial dessa extensão:
Quer ver 100% na prática como funciona o GII? Acessa esse vídeo do
meu canal e veja o tempo que você vai ganhar utilizando essa extensão no
seu dia-a-dia:
12. 12
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
5. UTILIZAÇÃO DE
MIGRATIONS
Migrations já não é uma novidade no universo de desenvolvimento! O
Yii Framework nativamente traz suporte a migrations.
Durante o desenvolvimento e manutenção de uma aplicação orien-
tado por banco de dados, a estrutura do banco de dados que está sendo
usado evolui bastante assim como o próprio código-fonte. Por exemplo,
uma nova tabela pode ser considerada necessária; a criação de uma nova
coluna; nova chave estrangeira (Foreign Key); Depois que a aplicação é en-
viada para produção, pode-se descobrir que um índice deve ser criado para
melhorar o desempenho da consulta; e por aí vai.
O Yii suporta o chamado recurso de Database Migration (migração de
banco de dados) que permite que você acompanhe as mudanças do seu banco
de dados, que são controladas por versão juntamente com o código-fonte.
É muito fácil escrever/criar migrações no Yii Framework, basta execu-
tar o comando:
yii migrate/create <nome_da_sua_migration>
yii migrate/create criar_tabela_pessoas
yii migrate/create criar_chaves_estrangeiras_pessoas
yii migrate/create adicionar_indices
Ao executar o comando yii migrate/create criar_tabela_
pessoas, por exemplo, ele criará dentro do diretório "seu-app/migrations"
uma arquivo chamado (ou algo parecido).
m150101_185401_criar_tabela_pessoas.php
13. 13
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
Nota: o nome da classe e arquivo de migration é criado utilizando
o formato m<YYMMDD_HHMMSS>_<Name> , onde <YYMMDD_HHMMSS>
representa a data + hora em que a migration foi criada e o <Name> repre-
senta o nome que você colocou no argumento do comando.
No arquivo criado você encontrará uma classe com o mesmo nome do
arquivo com um código base:
<?php
use yiidbMigration;
class m150101_185401_criar_tabela_pessoas extends
Migration
{
public function up()
{
}
public function down()
{
echo "m150101_185401_criar_tabela_pessoas
cannot be reverted.n";
return false;
}
/*
// Use safeUp/safeDown to run migration code
within a transaction
public function safeUp()
{
}
public function safeDown()
{
}
*/
}
14. 14
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
Na classe de migração você deverá escrever código que faz alterações na
estrutura do banco de dados no método up(). Você também pode querer es-
crever o código no método down() para reverter as mudanças feitas por up().
Resumindo: o método up() é chamado quando você atualiza o ban-
co de dados com essa migração, enquanto o método down() é chamado
quando você quer reverter tudo o que foi feito no up(). O código abaixo
mostra um exemplo de como você pode implementar uma migração para
a tabela de pessoas criada acima:
<?php
use yiidbMigration;
class m150101_185401_criar_tabela_pessoas extends
Migration
{
public function up()
{
$this->createTable('pessoas', [
'id' => $this->primaryKey(),
'nome' => $this->string(60)->notNull(),
'idade' => $this->integer(),
'email' => $this->string(40)->notNull(),
'ativo' => $this->smallint(1)->notNull()-
>defaultValue(1)
]);
}
public function down()
{
$this->dropTable('pessoas');
}
}
Para aplicar essa migration, basta executar o comando:
yii migrate
15. 15
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
Caso você tenha achado interessante o assunto de migrations e queira
ver um exemplo prático de uso, assista esse vídeo do meu canal:
Migrations não é só isso que mostrei não, ainda tem muita coisa a ser
explorado. Caso você queira se aprofundar ainda mais nesse assunto, basta
acessar o guia oficial na documentação oficial:
http://www.yiiframework.com/doc-2.0/guide-db-migrations.html
6. SUA MARAVILHOSA ORM
A ORM do Yii Framework torna o trabalho com banco de dados mui-
to mais fácil e produtivo. Além da alta performance, os seus métodos são
bastante intuitivos. O Yii utiliza o padrão de projeto ActiveRecord para ma-
nipulação e mapeamento relacional dos objetos.
Existe um repositório chamando PHP ORM Benchmark que foi criado
pelo Kenjis para realizar benchmarks (testes de performance) das principais
ORM's do mercado! Veja na imagem abaixo a tabela extraída do repositório:
16. 16
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
Vocês podem ver na tabela acima que, no dia da publicação deste
e-book, o Yii Framework na versão 1.x já estava em uma posição bem à fren-
te dos populares Doctrine, Propel e Eloquent. E na versão 2.x ele ganhou
ainda mais posições a frente dos mesmos.
Notem que, para o mesmo volume de processamento, o Yii2 demo-
rou aproximadamente 9,09 milissegundos e consumiu aproximadamente
835,82 KB, perdendo apenas para a ORM do Phalcon.
Abaixo, vou mostrar algumas consultas que você pode fazer utilizando
sua maravilhosa ORM:
Utilizando a QueryBuilder (Construtor de Consultas):
$rows = (new yiidbQuery())
->select(['id', 'email'])
->from('user')
->where(['last_name' => 'Smith'])
->limit(10)
->all();
Representa, neste exemplo no MySQL, a query:
SELECT `id`, `email`
FROM `user`
WHERE `last_name` = :last_name
LIMIT 10
Utilizando através de um ActiveRecord:
// SELECT * FROM `customer` WHERE `id` = 123
$customer = Customer::findOne(123);
// SELECT * FROM `customer` WHERE `id` IN (100, 101,
123, 124)
17. 17
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
$customers = Customer::findAll([100, 101, 123, 124]);
// SELECT * FROM `customer` WHERE `id` = 123 AND
`status` = 1
$customer = Customer::findOne([
'id' => 123,
'status' => Customer::STATUS_ACTIVE,
]);
// SELECT * FROM `customer` WHERE `id` = 123
$customer = Customer::find()
->where(['id' => 123])
->one();
// SELECT * FROM `customer` WHERE `status` = 1 ORDER
BY `id`
$customers = Customer::find()
->where(['status' => Customer::STATUS_ACTIVE])
->orderBy('id')
->all();
Caso você queira ver na prática o funcionamento da ORM do Yii Fra-
mework, assista esse vídeo do meu canal e veja como você constrói rapida-
mente suas consultas:
E caso você queira se aprofundar ainda mais no assunto, basta você ir
no guia oficial:
http://www.yiiframework.com/doc-2.0/guide-db-dao.html
18. 18
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
7. WIDGETS NATIVOS
E CUSTOMIZADOS
O Yii Framework dispõe de vários widgets para uso na sua aplicação. Wi-
dgets são blocos de construção reutilizáveis usados nas views para criação de
elementos de interface complexas e configuráveis de forma orientada a objetos.
Por exemplo, um widget de Datepicker pode gerar um selecionador
de data extravagante que permite aos usuários escolher uma data. Tudo o
que você precisa fazer é apenas inserir o código em uma view dessa forma:
<?= yiijuiDatePicker::widget(['name' => 'date']) ?>
Essa código vai gerar um campo de texto que ao ser dado o foco no
mesmo surgirá um Datepicker do JqueryUI, como na imagem abaixo:
19. 19
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
Já o código abaixo:
<?= yiijuiSlider::widget([
'clientOptions' => [
'min' => 1,
'max' => 20,
],
]) ?>
Vai gerar um Slider também do JqueryUI, como na imagem abaixo:
E para finalizar os exemplos, no código abaixo:
<?= yiijuiAutoComplete::widget([
'name' => 'country',
'clientOptions' => [
'source' => ['USA', 'RUS', 'BRA', 'ARG'],
],
]) ?>
Vai gerar um autocomplete como na imagem abaixo:
20. 2 0
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
Os widgets são projetados para serem autônomos, ou seja, ao usar
um widget você pode simplesmente "soltá-lo" em uma view sem fazer mais
nada. Você ainda pode criar os seus próprios widgets. Veja como é fácil criar
o seu próprio widget:
<?php
namespace appcomponents;
use yiibaseWidget;
use yiihelpersHtml;
class HelloWidget extends Widget
{
public $message;
public function init()
{
parent::init();
if ($this->message === null) {
$this->message = 'Hello World';
}
}
public function run()
{
return Html::encode($this->message);
}
}
Para usar esse widget personalizado, basta fazermos da mesma forma
que fizemos anteriormente, só que utilizando o nome do nosso widget:
<?= appcomponentsHelloWidget::widget([
'message' => 'Good morning’
]) ?>
21. 21
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
Caso você queria ver o funcionamento na prática do uso de vários
widgets do Yii Framework e também ver como criar o seu próprio widget,
assista esse vídeo do meu canal:
Caso você queira se aprofundar ainda mais no assunto de widgets, bas-
ta ir no guia oficial acessando o endereço:
http://www.yiiframework.com/doc-2.0/guide-structure-widgets.html
8. INÚMERAS EXTENSÕES
O widget do Datepicker, que você viu na seção anterior, e o GII, que você
viu na seção 4, são duas das muitas extensões oficiais do Yii Framework. O
Yii tem várias extensões prontas para serem usadas. Extensões boas, total-
mente úteis, versáteis, muito bem testadas e aprovadas pela comunidade.
Se você for no site do packagist.org e fazer uma consulta com o termo
"yii2-", você encontrará centenas de extensões oficiais do framework. Veja a
imagem a seguir:
22. 2 2
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
Nota: foram colocados somente alguns resultados da pesquisa, senão,
iria ter que gastar umas 8 páginas do E-book
E como foi visto nas outras seções, caso você queira criar a sua própria
extensão, basta seguir o guia oficial:
http://www.yiiframework.com/doc-2.0/guide-structure-extensions.html#-
creating-extensions
23. 2 3
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
CONCLUSÃO
Espero que eu tenha despertado um interesse em você ao ter mostra-
do esses 8 motivos para usar o Yii2 em seus projetos! Isso que te mostrei é
apenas uma pontinha do Iceberg. Esse Framework tem muita coisa ainda a
te impressionar!
Antes de finalizar esse E-book, quero te mostrar 2 coisas:
1º - Cadastre-se na nossa lista e fique por dentro primeiro que todo
mundo ao publicar artigos, tutoriais e vídeos. Clique no botão
abaixo e cadastre-se!
https://dersonsena.typeform.com/to/Z5q3Rr
2º - Assiste um vídeo onde eu palestrei exatamente sobre algumas featu-
res do Yii Framework 2. Você pode assistir clicando no botão abaixo:
Muito obrigado a você pelo seu tempo e pela sua atenção! Espero ter
contribuído com o seu aprendizado e ter deixado você aguçado e curioso.
Um forte abraço!
Kilderson Sena
24. 24
8 M O T I V O S P A R A U S A R O Y i i 2
Y i i A C A D E M Y
AGRADECIMENTOS
Gostaria de agradecer a todos que me ajudaram de uma forma
ou de outra. Meus amigos desenvolvedores, a toda a comunidade PHP
e do Yii Framework que me ajudaram e me incentivaram a fazer esse
material, em especial:
• Eric Maicon, Bruno Marinho, Almir Bouduan, Cálcio, Germa-
no Ricardi, Gustavo Teixeira e Railton Nepomuceno.
Quero também agradecer esses 2 carinhas que fizeram parte do
"mão na massa" e contribuíram fortemente para esse E-book:
• Ao pessoal da Elevo Digital, do meu meu grande parceiro e
amigo Daniel de Jesus, que cuidou (e muito bem) da criação
da Capa do E-book.
• E outro cara fora de sério é o Felipe Araújo, que fez toda a iden-
tidade visual e diagramação do E-book.
D E S I G N E E S T R A T É G I A
S T U D I O
Rua 34, 190 - sala 207 | Conj. Sítio São João | Fortaleza - CE
85 98694 2009 | 85 99975 0340
felipe@studiofelipearaujo.com.br
www.studiofelipearaujo.com.br
a
Muitíssimo obrigado a todos! Com ajuda forte dessa galera, esse
E-book com certeza me serviu inspiração para outros materiais!
85 99985.7367
elevodigital@gmail.com
85 99975.0340
contato.felipearaujo@gmail.com