SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
8
<?>
Kilderson Sena
Created
By
GraphiqaStock
-
Freepik.com
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
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
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
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
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
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 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
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
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
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
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
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
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
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
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
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
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
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:
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
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:
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
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
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

Mais conteúdo relacionado

Mais procurados

Silverlight 4 e Expression Blend 4
Silverlight 4 e Expression Blend 4Silverlight 4 e Expression Blend 4
Silverlight 4 e Expression Blend 4Rodrigo Kono
 
Cauda Longa e Pesquisa de Palavras-chave - Aula 4 - Curso de SEO
Cauda Longa e Pesquisa de Palavras-chave - Aula 4 - Curso de SEOCauda Longa e Pesquisa de Palavras-chave - Aula 4 - Curso de SEO
Cauda Longa e Pesquisa de Palavras-chave - Aula 4 - Curso de SEODiego Ivo
 
Gerenciando Projetos de SEO - Aula 10 - Curso de SEO #OpenSEO
Gerenciando Projetos de SEO - Aula 10 - Curso de SEO #OpenSEOGerenciando Projetos de SEO - Aula 10 - Curso de SEO #OpenSEO
Gerenciando Projetos de SEO - Aula 10 - Curso de SEO #OpenSEODiego Ivo
 
Ferramentas de SEO - Aula 9 - Curso de SEO #OpenSEO
Ferramentas de SEO - Aula 9 - Curso de SEO #OpenSEOFerramentas de SEO - Aula 9 - Curso de SEO #OpenSEO
Ferramentas de SEO - Aula 9 - Curso de SEO #OpenSEODiego Ivo
 
On Page, Links Internos e Nofollow - Aula 3 - Curso de SEO #OpenSEO
On Page, Links Internos e Nofollow - Aula 3 - Curso de SEO #OpenSEOOn Page, Links Internos e Nofollow - Aula 3 - Curso de SEO #OpenSEO
On Page, Links Internos e Nofollow - Aula 3 - Curso de SEO #OpenSEODiego Ivo
 
Apresentação Final
Apresentação FinalApresentação Final
Apresentação Finalsummitcti
 
Apresentação Final
Apresentação FinalApresentação Final
Apresentação Finalsummitcti
 
Arquitetura da Informação em SEO - Aula 5 do Curso de SEO
Arquitetura da Informação em SEO - Aula 5 do Curso de SEOArquitetura da Informação em SEO - Aula 5 do Curso de SEO
Arquitetura da Informação em SEO - Aula 5 do Curso de SEODiego Ivo
 
Orquestrando Aplicações PHP com Symfony
Orquestrando Aplicações PHP com SymfonyOrquestrando Aplicações PHP com Symfony
Orquestrando Aplicações PHP com SymfonyFlávio Lisboa
 
Fontes em XML, Android O. Configuração e Uso
Fontes em XML, Android O. Configuração e UsoFontes em XML, Android O. Configuração e Uso
Fontes em XML, Android O. Configuração e UsoVinícius Thiengo
 
Incorporação de HTML
Incorporação de HTMLIncorporação de HTML
Incorporação de HTMLGrupoBass
 
Fluxo de trabalho com Illustrator e Flash
Fluxo de trabalho com Illustrator e FlashFluxo de trabalho com Illustrator e Flash
Fluxo de trabalho com Illustrator e FlashFábio Flatschart
 
Estudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do BlogEstudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do BlogVinícius Thiengo
 
Estratégias de conteúdo para SEO - Aula 6 - Curso de SEO
Estratégias de conteúdo para SEO - Aula 6 - Curso de SEOEstratégias de conteúdo para SEO - Aula 6 - Curso de SEO
Estratégias de conteúdo para SEO - Aula 6 - Curso de SEODiego Ivo
 

Mais procurados (18)

Silverlight 4 e Expression Blend 4
Silverlight 4 e Expression Blend 4Silverlight 4 e Expression Blend 4
Silverlight 4 e Expression Blend 4
 
Cauda Longa e Pesquisa de Palavras-chave - Aula 4 - Curso de SEO
Cauda Longa e Pesquisa de Palavras-chave - Aula 4 - Curso de SEOCauda Longa e Pesquisa de Palavras-chave - Aula 4 - Curso de SEO
Cauda Longa e Pesquisa de Palavras-chave - Aula 4 - Curso de SEO
 
Android Studio
Android StudioAndroid Studio
Android Studio
 
Gerenciando Projetos de SEO - Aula 10 - Curso de SEO #OpenSEO
Gerenciando Projetos de SEO - Aula 10 - Curso de SEO #OpenSEOGerenciando Projetos de SEO - Aula 10 - Curso de SEO #OpenSEO
Gerenciando Projetos de SEO - Aula 10 - Curso de SEO #OpenSEO
 
Ferramentas de SEO - Aula 9 - Curso de SEO #OpenSEO
Ferramentas de SEO - Aula 9 - Curso de SEO #OpenSEOFerramentas de SEO - Aula 9 - Curso de SEO #OpenSEO
Ferramentas de SEO - Aula 9 - Curso de SEO #OpenSEO
 
On Page, Links Internos e Nofollow - Aula 3 - Curso de SEO #OpenSEO
On Page, Links Internos e Nofollow - Aula 3 - Curso de SEO #OpenSEOOn Page, Links Internos e Nofollow - Aula 3 - Curso de SEO #OpenSEO
On Page, Links Internos e Nofollow - Aula 3 - Curso de SEO #OpenSEO
 
Apresentação Final
Apresentação FinalApresentação Final
Apresentação Final
 
Apresentação Final
Apresentação FinalApresentação Final
Apresentação Final
 
Arquitetura da Informação em SEO - Aula 5 do Curso de SEO
Arquitetura da Informação em SEO - Aula 5 do Curso de SEOArquitetura da Informação em SEO - Aula 5 do Curso de SEO
Arquitetura da Informação em SEO - Aula 5 do Curso de SEO
 
Orquestrando Aplicações PHP com Symfony
Orquestrando Aplicações PHP com SymfonyOrquestrando Aplicações PHP com Symfony
Orquestrando Aplicações PHP com Symfony
 
Fontes em XML, Android O. Configuração e Uso
Fontes em XML, Android O. Configuração e UsoFontes em XML, Android O. Configuração e Uso
Fontes em XML, Android O. Configuração e Uso
 
Introdução Ao Desenvolvimento Para Iphone
Introdução Ao Desenvolvimento Para IphoneIntrodução Ao Desenvolvimento Para Iphone
Introdução Ao Desenvolvimento Para Iphone
 
Curso de Joomla!
Curso de Joomla!Curso de Joomla!
Curso de Joomla!
 
Incorporação de HTML
Incorporação de HTMLIncorporação de HTML
Incorporação de HTML
 
Fluxo de trabalho com Illustrator e Flash
Fluxo de trabalho com Illustrator e FlashFluxo de trabalho com Illustrator e Flash
Fluxo de trabalho com Illustrator e Flash
 
Estudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do BlogEstudando Android - Lista de Conteúdos do Blog
Estudando Android - Lista de Conteúdos do Blog
 
Estratégias de conteúdo para SEO - Aula 6 - Curso de SEO
Estratégias de conteúdo para SEO - Aula 6 - Curso de SEOEstratégias de conteúdo para SEO - Aula 6 - Curso de SEO
Estratégias de conteúdo para SEO - Aula 6 - Curso de SEO
 
Introducao ao PHP @edgarsandi
Introducao ao PHP @edgarsandiIntroducao ao PHP @edgarsandi
Introducao ao PHP @edgarsandi
 

Semelhante a 8 motivos-para-usar-o-yii2

Yii Framework - Produtividade sem perder Qualidade!
Yii Framework - Produtividade sem perder Qualidade!Yii Framework - Produtividade sem perder Qualidade!
Yii Framework - Produtividade sem perder Qualidade!Kilderson Sena
 
Ionic Framework - Configuração do ambiente e a criação da primeira APP
Ionic Framework - Configuração do ambiente e a criação da primeira APPIonic Framework - Configuração do ambiente e a criação da primeira APP
Ionic Framework - Configuração do ambiente e a criação da primeira APPFabio Godoy
 
É possível produzir mais com a mesma qualidade? Conheça o Yii Framework!
É possível produzir mais com a mesma qualidade? Conheça o Yii Framework!É possível produzir mais com a mesma qualidade? Conheça o Yii Framework!
É possível produzir mais com a mesma qualidade? Conheça o Yii Framework!Kilderson Sena
 
1401 - Revista - Android.pdf
1401 - Revista - Android.pdf1401 - Revista - Android.pdf
1401 - Revista - Android.pdfjoaoJunior93
 
PHP Symfony, Vale A Pena
PHP Symfony, Vale A PenaPHP Symfony, Vale A Pena
PHP Symfony, Vale A PenaMarcelo Fleury
 
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...Marcelo Marques Gonçalves
 
Curso: Desenvolvimento de aplicativos híbridos (dia 1)
Curso: Desenvolvimento de aplicativos híbridos (dia 1)Curso: Desenvolvimento de aplicativos híbridos (dia 1)
Curso: Desenvolvimento de aplicativos híbridos (dia 1)Wennder Santos
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterEric Silva
 
TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...
TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...
TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...JP Clementi
 
Slide 02 introdução ao code igniter, utilização do bootstrap
Slide 02   introdução ao code igniter, utilização do bootstrap Slide 02   introdução ao code igniter, utilização do bootstrap
Slide 02 introdução ao code igniter, utilização do bootstrap Raniere de Lima
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Tchelinux
 
1502 - Revista - SQL Server.pdf
1502 - Revista - SQL Server.pdf1502 - Revista - SQL Server.pdf
1502 - Revista - SQL Server.pdfjoaoJunior93
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Vinícius de Paula
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendThiago Sinésio
 
Trabalhando de forma profissional com silex
Trabalhando de forma profissional com silexTrabalhando de forma profissional com silex
Trabalhando de forma profissional com silexMichael Douglas
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 
Zend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil CompetenteZend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil CompetenteMichael Cardoso
 

Semelhante a 8 motivos-para-usar-o-yii2 (20)

Yii Framework - Produtividade sem perder Qualidade!
Yii Framework - Produtividade sem perder Qualidade!Yii Framework - Produtividade sem perder Qualidade!
Yii Framework - Produtividade sem perder Qualidade!
 
Palestra yii2
Palestra yii2Palestra yii2
Palestra yii2
 
Ionic Framework - Configuração do ambiente e a criação da primeira APP
Ionic Framework - Configuração do ambiente e a criação da primeira APPIonic Framework - Configuração do ambiente e a criação da primeira APP
Ionic Framework - Configuração do ambiente e a criação da primeira APP
 
É possível produzir mais com a mesma qualidade? Conheça o Yii Framework!
É possível produzir mais com a mesma qualidade? Conheça o Yii Framework!É possível produzir mais com a mesma qualidade? Conheça o Yii Framework!
É possível produzir mais com a mesma qualidade? Conheça o Yii Framework!
 
1401 - Revista - Android.pdf
1401 - Revista - Android.pdf1401 - Revista - Android.pdf
1401 - Revista - Android.pdf
 
Minicurso Yii2
Minicurso Yii2Minicurso Yii2
Minicurso Yii2
 
PHP Symfony, Vale A Pena
PHP Symfony, Vale A PenaPHP Symfony, Vale A Pena
PHP Symfony, Vale A Pena
 
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
Aplicativos hibridos-com-ionic-voce-tambem-pode-comecar-a-desenvolver-agora-t...
 
Tutorial codeigniter
Tutorial codeigniterTutorial codeigniter
Tutorial codeigniter
 
Curso: Desenvolvimento de aplicativos híbridos (dia 1)
Curso: Desenvolvimento de aplicativos híbridos (dia 1)Curso: Desenvolvimento de aplicativos híbridos (dia 1)
Curso: Desenvolvimento de aplicativos híbridos (dia 1)
 
CEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniterCEPUG 2 - Bem-vindo a Framework CodeIgniter
CEPUG 2 - Bem-vindo a Framework CodeIgniter
 
TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...
TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...
TechEd Brasil 2010 - Novidades e razões para migrar para o microsoft .net fra...
 
Slide 02 introdução ao code igniter, utilização do bootstrap
Slide 02   introdução ao code igniter, utilização do bootstrap Slide 02   introdução ao code igniter, utilização do bootstrap
Slide 02 introdução ao code igniter, utilização do bootstrap
 
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
 
1502 - Revista - SQL Server.pdf
1502 - Revista - SQL Server.pdf1502 - Revista - SQL Server.pdf
1502 - Revista - SQL Server.pdf
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Trabalhando de forma profissional com silex
Trabalhando de forma profissional com silexTrabalhando de forma profissional com silex
Trabalhando de forma profissional com silex
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 
Zend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil CompetenteZend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil Competente
 

Mais de Renato Lucena

Php assíncrono com_react_php
Php assíncrono com_react_phpPhp assíncrono com_react_php
Php assíncrono com_react_phpRenato Lucena
 
Laravelcollectionsunraveled
LaravelcollectionsunraveledLaravelcollectionsunraveled
LaravelcollectionsunraveledRenato Lucena
 
Desconstruindo paulo freire thomas giulliano
Desconstruindo paulo freire   thomas giullianoDesconstruindo paulo freire   thomas giulliano
Desconstruindo paulo freire thomas giullianoRenato Lucena
 
Estruturas blade-repeticao
Estruturas blade-repeticaoEstruturas blade-repeticao
Estruturas blade-repeticaoRenato Lucena
 
Revista programar 51
Revista programar 51Revista programar 51
Revista programar 51Renato Lucena
 
Apresentacao engenharia aup
Apresentacao engenharia aupApresentacao engenharia aup
Apresentacao engenharia aupRenato Lucena
 
Curiosidades bíblia
Curiosidades bíbliaCuriosidades bíblia
Curiosidades bíbliaRenato Lucena
 
Team viwer linux inicia ubuntu
Team viwer linux inicia ubuntuTeam viwer linux inicia ubuntu
Team viwer linux inicia ubuntuRenato Lucena
 

Mais de Renato Lucena (12)

Php assíncrono com_react_php
Php assíncrono com_react_phpPhp assíncrono com_react_php
Php assíncrono com_react_php
 
Crunchy containers
Crunchy containersCrunchy containers
Crunchy containers
 
Aulão de docker
Aulão de dockerAulão de docker
Aulão de docker
 
Laravelcollectionsunraveled
LaravelcollectionsunraveledLaravelcollectionsunraveled
Laravelcollectionsunraveled
 
Ebook ui-design-v2
Ebook ui-design-v2Ebook ui-design-v2
Ebook ui-design-v2
 
Desconstruindo paulo freire thomas giulliano
Desconstruindo paulo freire   thomas giullianoDesconstruindo paulo freire   thomas giulliano
Desconstruindo paulo freire thomas giulliano
 
Estruturas blade-repeticao
Estruturas blade-repeticaoEstruturas blade-repeticao
Estruturas blade-repeticao
 
Revista programar 51
Revista programar 51Revista programar 51
Revista programar 51
 
Apresentacao engenharia aup
Apresentacao engenharia aupApresentacao engenharia aup
Apresentacao engenharia aup
 
Crud
CrudCrud
Crud
 
Curiosidades bíblia
Curiosidades bíbliaCuriosidades bíblia
Curiosidades bíblia
 
Team viwer linux inicia ubuntu
Team viwer linux inicia ubuntuTeam viwer linux inicia ubuntu
Team viwer linux inicia ubuntu
 

Último

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 

Último (8)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

8 motivos-para-usar-o-yii2

  • 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