Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Frameworks da Nova Era PHP
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Dan Jesus
November 29, 2013
Programming
1
110
Frameworks da Nova Era PHP
Palestra aprensentada na PHPConference
Dan Jesus
November 29, 2013
Tweet
Share
More Decks by Dan Jesus
See All by Dan Jesus
Turbinando seu Ambiente com Yeoman - TDC SP 2013
danjesus
0
280
Ferramentas e Produtividade em JS
danjesus
3
160
Turbinando seu ambiente de desenvolvimento com Yeoman
danjesus
3
230
Porque criar seu próprio framework PHP
danjesus
3
590
Other Decks in Programming
See All in Programming
Fragmented Architectures
denyspoltorak
0
150
CSC307 Lecture 06
javiergs
PRO
0
680
疑似コードによるプロンプト記述、どのくらい正確に実行される?
kokuyouwind
0
380
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
400
AI時代の認知負荷との向き合い方
optfit
0
160
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.6k
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
120
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
2.5k
Grafana:建立系統全知視角的捷徑
blueswen
0
330
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
4
540
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
370
高速開発のためのコード整理術
sutetotanuki
1
400
Featured
See All Featured
KATA
mclloyd
PRO
34
15k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
250
Documentation Writing (for coders)
carmenintech
77
5.2k
Abbi's Birthday
coloredviolet
1
4.7k
30 Presentation Tips
portentint
PRO
1
210
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
0
320
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
A Soul's Torment
seathinner
5
2.2k
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
320
Transcript
FRAMEWORKS DA NOVA ERA PHP DAN JESUS
40#3&.*. $danjesus = [ “developer” => [“php”, js”, “ruby”, “java”,
“objective-c”], “where” => [“LQDI Digital”, “Co-founder Solhys Tecnologia”], “blog” => [“danjesus.github.io”] ]; ! return $danjesus;
'6&-1)1 'VFM1)1JTBTJNQMF qFYJCMF DPNNVOJUZESJWFO 1)1 GSBNFXPSL CBTFEPOUIFCFTUJEFBTPG PUIFSGSBNFXPSLT XJUIBGSFTITUBSU
None
'6&-1)1 .0%6-"3 #005453"14*.1-&4 &95&/4°7&-
).7$
*/45"-"ª§0
DVSMHFUGVFMQIQDPNPJMcTI via curl
HJUDMPOFHJUHJUIVCDPNGVFMGVFMHJU via git
0*-$0.."/%-*/&
PJMDSFBUF DFMM DPOTPMF HFOFSBUF QBDLBHF SFpOF IFMQ TFSWFS UFTU
PJMDSFBUF\BQQOBNF^ criando o app usando oil *OTUBMBBT EFQFOEÊODJBT DPNDPNQPTFS $MPOBP
SFQPTJUÓSJPHJU &YFDVUBPT TVCNÓEVMPT
criando um controller PJMHFOFSBUF DPOUSPMMFS\BDUJPOT^ oil generate controller Posts index
view add criando um model PJMHFOFSBUF NPEFM oil generate controller Post index view add
scaffolding criando automaticamente PJMHFOFSBUF TDB⒎PME oil generate scaffold Post title:varchar[200]
content:text migrations PJMHFOFSBUFNJHSBUJPO\OBNF^ oil generate migration add_image_to_post image:varchar[200]
&4536563"'6&- $PNQPTFS %PDVNFOUBÇÄP 4VBBQQ 'VFM$PSF "TTFUTDTTKTJNH 1BDPUFTEP'VFM"VUIc0SN
&4536563""11 "SRVJWPEFJOJDJBMJ[BÇÄPEBBQQ $BDIF $POUSPMMFST .PEFMT .PEFM7JFX $POpHVSBÇÕFT *OJOUFSOBDJPOBMJ[BÇÄP "SRVJWPTEFMPH .JHSBUJPOT
.ÓEVMPT 5BSFGBT 5FTUFT "SRVJWPTUFNQPSÂSJPT -JCTEFUFSDFJSPT 7JFXTIUNM NVTUBDIF UXJH
$0/530--&3
$0/530--&3#"4& 3&45
):#3*% 5&.1-"5&
class Controller_Posts extends Controller {} class Controller_Posts extends Controller_Template {}
class Controller_Posts extends Controller_Rest {} class Controller_Posts extends Controller_Hybrid {} #"4& 5&.1-"5& 3&45 ):#3*%
&4536563"$0/530--&3 class Controller_Posts extends Controller { ! public function action_index()
{ return Response::forge(View::forge('posts/index')); } ! }
&4536563"$0/530--&3 class Controller_Posts extends Controller { ! public function action_index()
{ return Response::forge(View::forge('posts/index')); } ! } 1SFpYP$POUSPMMFS@QPEFTFSBMUFSBEPOBT DPOpHVSBÇÕFTQBSBVTBSVNOBNFTQBDF
&4536563"$0/530--&3 class Controller_Posts extends Controller { ! public function action_index()
{ return Response::forge(View::forge('posts/index')); } ! } 5JQPEPDPOUSPMMFS
&4536563"$0/530--&3 class Controller_Posts extends Controller { ! public function action_index()
{ return Response::forge(View::forge('posts/index')); } ! } BDUJPOQPEFSVNWFSCPIUUQDPNPHFU QPTU QVU EFMFUF
$0/530--&35&.1-"5& class Controller_Posts extends Controller_Template { //default template.php $this->template =
'template-name'; ! public function action_index() { $this->template->title = 'Template Controller'; $this->template->content = View::forge('posts/index'); } }
$0/530--&35&.1-"5& class Controller_Posts extends Controller_Template { //default template.php $this->template =
'template-name'; ! public function action_index() { $this->template->title = 'Template Controller'; $this->template->content = View::forge('posts/index'); } } 1FSNJUFBQBTTBHFNEFWBSJÂWFJTFWJFXT QBSBPUFNQMBUF
$0/530--&35&.1-"5& class Controller_Posts extends Controller_Template { //default template.php $this->template =
'template-name'; ! public function action_index() { $this->template->title = 'Template Controller'; $this->template->content = View::forge('posts/index'); } } 7JFXRVFTFSÂSFOEFSJ[BEBEFOUSPEFTUB ÂSFBOPUFNQMBUF
$0/530--&35&.1-"5& class Controller_Posts extends Controller_Template { //default template.php $this->template =
'template-name'; ! public function action_index() { $this->template->title = 'Template Controller'; $this->template->content = View::forge('posts/index'); } } 7JFXRVFTFSÂSFOEFSJ[BEBEFOUSPEFTUB ÂSFBOPUFNQMBUF
$0/530--&33&45 class Controller_Test extends Controller_Rest { protected $format = 'json';
! public function get_list() { return $this->response(array( 'foo' => Input::get('foo'), 'baz' => array( 1, 50, 219 ), 'empty' => null )); } }
$0/530--&33&45 class Controller_Test extends Controller_Rest { protected $format = 'json';
! public function get_list() { return $this->response(array( 'foo' => Input::get('foo'), 'baz' => array( 1, 50, 219 ), 'empty' => null )); } } 'PSNBUPQPEFTFSKTPO YNM DTW IUNM QIQ PVTFSJBMJ[F
$0/530--&33&45 class Controller_Test extends Controller_Rest { protected $format = 'json';
! public function get_list() { return $this->response(array( 'foo' => Input::get('foo'), 'baz' => array( 1, 50, 219 ), 'empty' => null )); } } BDUJPOQPEFTFSHFU QPTU QVU EFMFUFPV QBUDI
$0/530--&3):#3*% class Controller_Post extends Controller_Hybrid { protected $format = 'json';
! public function action_index() { $this->template->content = View::forge('posts/index'); } ! public function get_list() { return $this->response(array( 'foo' => Input::get('foo'), 'baz' => array( 1, 50, 219 ), 'empty' => null )); } }
.0%&-
namespace Model; ! class Welcome extends \Model { ! public
static function get_results() { // Interações com o banco de dados } ! }
03. .0%&-$36% %#26&3:
namespace Model; ! class User extends \Model_Crud { protected static
$_properties = array( 'id', 'name', 'age', 'birth_date', 'gender', ); ! protected static $_table_name = 'users'; } .0%&-$36%
User::find_all(); ! User::find(); ! User::forge(array( 'name' => 'teste', 'age' =>
'teste' ... )); .0%&-$36%
namespace Model; ! use Orm\Model; ! class User extends Model
{ protected static $_properties = array( 'id', 'name', ); ! protected static $_table_name = 'users'; ! protected $_observers; protected $_belongs_to; protected $_has_many; protected $_has_one; protected $_many_many; } 03.
03. $user = new User(); $user->name = 'Dan Jesus'; $user->save();
! $users = User::find('all');
7*&8
.645"$)& 58*( +"%& )".- 4."35: 1"34&3
'always_load' => array( 'packages' => array( 'parser', ), ) arquivo
config.php )BCJMJUBOEPQBDLBHFQBSTFS
$view = View::forge('path/to/view', array( 'menu' => $menu, 'articles' => $articles,
'footer_links' => $footer_links, ))->auto_filter(); ! return $view;
1"35*"-4 echo render('path/to/view', array( 'menu' => $menu, 'articles' => $articles,
'footer_links' => $footer_links, ));
$0/'*(63"ª¸&4
%&7&-01.&/5 130%6$5*0/ 45"(*/( 5&45
'profiling' => true arquivo config.php )BCJMJUBSQIQRVJDLQSPpMMFS
arquivo config.php 'controller_prefix' => 'Controller\\' 6TBSOBNFTQBDFOPTDPOUSPMMFST
arquivo developement/db.php return array( 'default' => array( 'connection' => array(
'dsn' => 'mysql:host=localhost;dbname=fuel_dev', 'username' => 'root', 'password' => 'root', ), ! 'profilling' => true ), ); $POpHVSBÇÄPEPCBODPEFEBEPT
arquivo config.php )BCJMJUBOEP1BDLBHFT 'always_load' => array( 'packages' => array( 'orm',
), )
arquivo routes.php return array( '_root_' => 'welcome/index', // The default
route '_404_' => 'welcome/404', // The main 404 route 'hello(/:name)?' => array('welcome/hello', 'name' => 'hello'), );
public static function validate($factory) { $val = Validation::forge($factory); $val->add_field('title', 'Title',
'required|max_length[50]'); $val->add_field('content', 'Content', 'required'); ! return $val; } Validações no model
'6&-$03&
1SPKFUPOP(JUIVCIUUQTHJUIVCDPNGVFMQIQ $POUSJCVJOEPDPN'VFM1)1IUUQTHJUIVCDPNGVFMGVFMXJLJ$POUSJCVUJOH 'VFM1)1JTTVFUSBDLFSIUUQGVFMQIQDPNDPOUSJCVUFJTTVFUSBDLFS 'VFM1)1IUUQGVFMQIQDPNCMPHTBOVQEBUF 3&'&3/$*"4
1&3(6/5"4
0#3*("%0