Você está na página 1de 24

8

<?>

Kilderson Sena
Created By GraphiqaStock - Freepik.com
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

SOBRE MIM
Ol! Meu nome Kilderson Sena e sou desenvolvedor
PHP desde 2005. Conheci esse maravilhoso framework
em meados de 2009/2010 depois de ter passado por
inmeros outros, como: Zend Framework, CodeIgni-
ter, Symfony e CakePHP. Naquela poca, todos esses
frameworks me satisfaziam em alguns pontos, po-
rm em outros, deixava muito a desejar (s no per-
guntem o que era porque eu no lembro =D).
Depois que eu conheci o Yii, na poca em sua verso 1,
fiquei totalmente apaixonado com o grande ganho de produtividade, sua se-
gurana, 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 verso 2.x s acentua-
ram-se ainda mais os quesitos apontados acima, me deixando ainda mais
cado por esse framework.
Queria dividir com vocs esses mais de 3 anos de experincia com o
Yii Framework 2.x, mostrando 8 motivos para voc comear 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! Tambm sou membro e fao parte da


Organizao da Comunidade PHP aqui do Cear,
a comunidade: PHP com Rapadura

2
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

UM POUCO SOBRE O YII


Antes de falar sobre o Yii Framework, quero mostrar os endereos do
site e redes sociais oficiais:

Site Oficial: http://www.yiiframework.com


Repositrio 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 lderes do Prado Framework (inspirado
pela Apache Tapestry, Borland Delphi e Microsoft
ASP.NET) e hoje o grande lder do Yii Framework.
Naquela poca, a Zend realizou uma competio
chamada gophp5 para promover o recm-lana-
do PHP 5.0. Qiang re-implementou o Prado no PHP
5 e simplesmente ganhou a competio

DEFINIO
Abaixo segue a definio do Yii segundo o site Oficial:

Yii uma estrutura de PHP baseada em compo-


nentes de alto desempenho para o rpido desenvol-
vimento de aplicativos da Web modernos. O nome
Yii significa simples e evolutivo em chins. Tambm
pode ser pensado como um acrnimo para Yes It Is!
FONTE: Site Oficial Yii

3
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

A descrio oficial por si s j descreve bem o intuito desse camarada.


Para complementar a descrio oficial, o Yii Framework tem o slogan:

The Fast, Secure and Professional PHP Framework


Traduo: O framework PHP rpido, seguro e profissional

O Yii um framework muito bem projetado, com uma arquitetura


bem definida, usa design patterns quando necessrio e tem uma enorme
facilidade de ser extendido.
Vocs puderam perceber que suas premissas so 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.
Vocs no aguentam mais tanto bl bl bl no ? T bom, t bom!
Vamos deixar de teoria e vamos partir para o que interessa!

4
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

1. FCIL INSTALAO
Voc tem 2 formas de instalar o Yii framework:
1. Fazendo o download do framework direto do site;
2. Instalao via Composer (Extremamente recomendado);

Neste E-book, vou abordar somente a instalao 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 mquina, 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 no s os pacotes do composer, mas tambm os pacotes
do bower e do npm. Ou seja, caso voc queira adicionar tambm 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 instalao do Yii dentro do di-


retrio "seu-app". No se preocupe, caso no exista o diretrio "seu-app", o
prprio comando de criao de projetos cria automaticamente ele para voc.

5
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

Terminado todo processo de instalao, basta abrir o seu terminal, en-


trar no diretrio "seu-app" e digitar o comando:

php yii serve


E pronto! Dessa forma voc j instalou uma aplicao utilizando um
template bsico do Yii Framework 2! Voc j pode testar sua aplicao no
seu navegador pela URL:

http://localhost:8888

Voc deve ver uma pgina com um ttulo bem grande: "Congratulations".

Caso voc no veja a tela acima ou por acaso ocorra algum erro na
pgina, voc deve verificar os pr-requisitos bsicos 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

6
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

Este script vai te mostrar uma lista do que a verso do seu PHP precisa
para poder rodar o Yii Framework.
IMPORTANTE: voc deve ter pelo menos a verso PHP 5.4 ou superior
no seu ambiente, porm, o ideal o PHP 7 em sua verso mais recente.
Caso voc queira ver uma instalao do Yii2 com mais detalhes na pr-
tica, assista esse vdeo do meu canal:

7
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

Caso voc queira ver ainda mais detalhes sobre a instalao do Yii Fra-
mework, basta entrar na pgina de instalao da documentao oficial:

http://www.yiiframework.com/doc-2.0/guide-start-installation.html

2. DOCUMENTAO
SUPIMPA =)
A Organizao e detalhamento dos componentes, classes, atributos,
mtodos do Yii Framework uma coisa de deixar muitos outros Frameworks
no chinelo. Voc pode acessar a documentao oficial dele no endereo:

http://www.yiiframework.com/doc-2.0

Fora a tima organizao, layout muito agradvel, o Yii Framework


tambm tem uma srie de guias prticos sobre as principais funcionalida-
des que o framework oferece. Voc pode ver esse guia no endereo:

http://www.yiiframework.com/doc-2.0/guide-README.html

8
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

3. TUDO AQUI
COMPONENTE
Os Componentes no Yii2 nada mais so do que services locators. Eles
guardam um conjunto de "componentes de aplicao" que fornecem dife-
rentes servios.
Voc pode ver que no arquivo de configurao da aplicao (/seu-app/
config/web.php) voc ter um array dos "componentes registrados" quan-
do a aplicao for iniciada:

$config = [
...
'components' => [
'request' => [...],
'cache' => [...],
'user' => [...],
'errorHandler' => [...],
'mailer' => [...],
'log' => [...],
'db' => [...],
],
...
];

Nota: os detalhes de configuraes dos componentes foram omitidos


apenas para que fique mais limpo e claro o entendimento.
Cada chave do array "components" representa a configurao de um
Componente de Aplicao do Yii Framework. Seguindo essa linha de ra-
ciocnio: a chave "log" representa o componente para gerao de logs da
aplicao; A chave "db" representa o componente de conexo com a base
de dados; a chave "mailer" representa o componente de envio de e-mails e
assim sucessivamente.

9
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

TUDO BEM, EU REGISTREI TODOS ESSES COMPONENTES...


MAS COMO EU UTILIZO ELES?
Muito simples! Para utilizar os componentes de Aplicao 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 utilizao de
componentes de aplicao do Yii e tambm como criar o seu prprio com-
ponente na prtica, assista esse vdeo do meu canal:

E caso voc queira estudar mais a fundo os componentes basta entrar na


pgina Application Components da documentao oficial do Yii Framework:

http://www.yiiframework.com/doc-2.0/guide-structure-application-com-
ponents.html

10
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

4. BAITA GERADOR DE
CDIGOS: O FAMOSO GII!
O GII uma das vrias extenses oficiais do Yii Framework. Porm esse
aqui a gente tem que d um destaque maior pelo o que ele faz. Esta exten-
so fornece um timo gerador de cdigo. Voc pode usar o Gii para gerar
models, formulrios, mdulos, CRUD's e etc.
Ele fornece uma interface baseada na Web para gerar de forma inte-
rativa o cdigo desejado. Ele tambm fornece uma interface de linha de
comando para desenvolvedores que preferem trabalhar com console.
Veja abaixo a tela inicial dessa extenso:

Quer ver 100% na prtica como funciona o GII? Acessa esse vdeo do
meu canal e veja o tempo que voc vai ganhar utilizando essa extenso no
seu dia-a-dia:

11
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

5. UTILIZAO DE
MIGRATIONS
Migrations j no uma novidade no universo de desenvolvimento! O
Yii Framework nativamente traz suporte a migrations.
Durante o desenvolvimento e manuteno de uma aplicao orien-
tado por banco de dados, a estrutura do banco de dados que est sendo
usado evolui bastante assim como o prprio cdigo-fonte. Por exemplo,
uma nova tabela pode ser considerada necessria; a criao de uma nova
coluna; nova chave estrangeira (Foreign Key); Depois que a aplicao en-
viada para produo, 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 (migrao de
banco de dados) que permite que voc acompanhe as mudanas do seu banco
de dados, que so controladas por verso juntamente com o cdigo-fonte.
muito fcil escrever/criar migraes 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 diretrio "seu-app/migrations"
uma arquivo chamado (ou algo parecido).

m150101_185401_criar_tabela_pessoas.php

12
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

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 cdigo base:

<?php
use yii\db\Migration;

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()


{
}
*/
}

13
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

Na classe de migrao voc dever escrever cdigo que faz alteraes na


estrutura do banco de dados no mtodo up(). Voc tambm pode querer es-
crever o cdigo no mtodo down() para reverter as mudanas feitas por up().
Resumindo: o mtodo up() chamado quando voc atualiza o ban-
co de dados com essa migrao, enquanto o mtodo down() chamado
quando voc quer reverter tudo o que foi feito no up(). O cdigo abaixo
mostra um exemplo de como voc pode implementar uma migrao para
a tabela de pessoas criada acima:

<?php
use yii\db\Migration;

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

14
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

Caso voc tenha achado interessante o assunto de migrations e queira


ver um exemplo prtico de uso, assista esse vdeo do meu canal:

Migrations no s isso que mostrei no, ainda tem muita coisa a ser
explorado. Caso voc queira se aprofundar ainda mais nesse assunto, basta
acessar o guia oficial na documentao 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 fcil e produtivo. Alm da alta performance, os seus mtodos so
bastante intuitivos. O Yii utiliza o padro de projeto ActiveRecord para ma-
nipulao e mapeamento relacional dos objetos.
Existe um repositrio 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 extrada do repositrio:

15
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

Vocs podem ver na tabela acima que, no dia da publicao deste


e-book, o Yii Framework na verso 1.x j estava em uma posio bem fren-
te dos populares Doctrine, Propel e Eloquent. E na verso 2.x ele ganhou
ainda mais posies 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 \yii\db\Query())


->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 atravs de um ActiveRecord:

// SELECT * FROM `customer` WHERE `id` = 123


$customer = Customer::findOne(123);
// SELECT * FROM `customer` WHERE `id` IN (100, 101,
123, 124)

16
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

$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 prtica o funcionamento da ORM do Yii Fra-


mework, assista esse vdeo do meu canal e veja como voc constri 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

17
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

7. WIDGETS NATIVOS
E CUSTOMIZADOS
O Yii Framework dispe de vrios widgets para uso na sua aplicao. Wi-
dgets so blocos de construo reutilizveis usados nas views para criao de
elementos de interface complexas e configurveis de forma orientada a objetos.
Por exemplo, um widget de Datepicker pode gerar um selecionador
de data extravagante que permite aos usurios escolher uma data. Tudo o
que voc precisa fazer apenas inserir o cdigo em uma view dessa forma:

<?= yii\jui\DatePicker::widget(['name' => 'date']) ?>

Essa cdigo vai gerar um campo de texto que ao ser dado o foco no
mesmo surgir um Datepicker do JqueryUI, como na imagem abaixo:

18
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

J o cdigo abaixo:

<?= yii\jui\Slider::widget([
'clientOptions' => [
'min' => 1,
'max' => 20,
],
]) ?>

Vai gerar um Slider tambm do JqueryUI, como na imagem abaixo:

E para finalizar os exemplos, no cdigo abaixo:

<?= yii\jui\AutoComplete::widget([
'name' => 'country',
'clientOptions' => [
'source' => ['USA', 'RUS', 'BRA', 'ARG'],
],
]) ?>

Vai gerar um autocomplete como na imagem abaixo:

19
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

Os widgets so projetados para serem autnomos, ou seja, ao usar


um widget voc pode simplesmente "solt-lo" em uma view sem fazer mais
nada. Voc ainda pode criar os seus prprios widgets. Veja como fcil criar
o seu prprio widget:

<?php
namespace app\components;

use yii\base\Widget;
use yii\helpers\Html;

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:

<?= app\components\HelloWidget::widget([
'message' => 'Good morning
]) ?>

20
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

Caso voc queria ver o funcionamento na prtica do uso de vrios


widgets do Yii Framework e tambm ver como criar o seu prprio widget,
assista esse vdeo do meu canal:

Caso voc queira se aprofundar ainda mais no assunto de widgets, bas-


ta ir no guia oficial acessando o endereo:

http://www.yiiframework.com/doc-2.0/guide-structure-widgets.html

8. INMERAS EXTENSES
O widget do Datepicker, que voc viu na seo anterior, e o GII, que voc
viu na seo 4, so duas das muitas extenses oficiais do Yii Framework. O
Yii tem vrias extenses prontas para serem usadas. Extenses boas, total-
mente teis, versteis, 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 extenses oficiais do framework. Veja a
imagem a seguir:

21
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

Nota: foram colocados somente alguns resultados da pesquisa, seno,


iria ter que gastar umas 8 pginas do E-book

E como foi visto nas outras sees, caso voc queira criar a sua prpria
extenso, basta seguir o guia oficial:

http://www.yiiframework.com/doc-2.0/guide-structure-extensions.html#-
creating-extensions

22
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

CONCLUSO
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 vdeos. Clique no boto
abaixo e cadastre-se!

https://dersonsena.typeform.com/to/Z5q3Rr

2 - Assiste um vdeo onde eu palestrei exatamente sobre algumas featu-


res do Yii Framework 2. Voc pode assistir clicando no boto abaixo:

Muito obrigado a voc pelo seu tempo e pela sua ateno! Espero ter
contribudo com o seu aprendizado e ter deixado voc aguado e curioso.

Um forte abrao!
Kilderson Sena

23
Yii ACADEMY 8 MOTIVOS PARA USAR O Yii2

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, Clcio, Germa-


no Ricardi, Gustavo Teixeira e Railton Nepomuceno.

Quero tambm agradecer esses 2 carinhas que fizeram parte do


"mo na massa" e contriburam 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 criao
da Capa do E-book.

E outro cara fora de srio o Felipe Arajo, que fez toda a iden-
tidade visual e diagramao do E-book.

S T U D I O

DE SIG N E E S T R AT G I A

85 99985.7367 85 99975.0340
a Rua 34, 190 - sala 207
elevodigital@gmail.com contato.felipearaujo@gmail.com
| Conj. Stio So Joo | Fortaleza - CE
85 98694 2009 | 85 99975 0340
felipe@studiofelipearaujo.com.br
www.studiofelipearaujo.com.br

Muitssimo obrigado a todos! Com ajuda forte dessa galera, esse


E-book com certeza me serviu inspirao para outros materiais!

24