$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Frameworks da Nova Era PHP
Search
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
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
840
なあ兄弟、 余白の意味を考えてから UI実装してくれ!
ktcryomm
11
11k
Socio-Technical Evolution: Growing an Architecture and Its Organization for Fast Flow
cer
PRO
0
340
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
140
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
3
810
ZOZOにおけるAI活用の現在 ~モバイルアプリ開発でのAI活用状況と事例~
zozotech
PRO
9
5.7k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
130
Go コードベースの構成と AI コンテキスト定義
andpad
0
130
Cap'n Webについて
yusukebe
0
130
ローターアクトEクラブ アメリカンナイト:川端 柚菜 氏(Japan O.K. ローターアクトEクラブ 会長):2720 Japan O.K. ロータリーEクラブ2025年12月1日卓話
2720japanoke
0
730
【CA.ai #3】ワークフローから見直すAIエージェント — 必要な場面と“選ばない”判断
satoaoaka
0
250
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
510
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
Embracing the Ebb and Flow
colly
88
4.9k
Fireside Chat
paigeccino
41
3.7k
The Invisible Side of Design
smashingmag
302
51k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
54k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
286
14k
Building Flexible Design Systems
yeseniaperezcruz
330
39k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
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