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
Dan Jesus
November 29, 2013
Programming
120
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Frameworks da Nova Era PHP
Palestra aprensentada na PHPConference
Dan Jesus
November 29, 2013
More Decks by Dan Jesus
See All by Dan Jesus
Turbinando seu Ambiente com Yeoman - TDC SP 2013
danjesus
0
310
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
600
Other Decks in Programming
See All in Programming
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
140
継続モナドとリアクティブプログラミング
yukikurage
3
590
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
230
LaravelLive Japan の裏方のすべて — 第188回 PHP勉強会@東京 (2026-06-24)
suguruooki
2
150
えっ!!コードを読まずに開発を!?
hananouchi
0
210
OSINT for SRE: 学術論文とポストモーテムから探る システム障害の共通パターン / SRE NEXT 2026
tomoyk
1
3.7k
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
180
symfony/aiとlaravel/boost
77web
0
130
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
860
Foundation Models frameworkで画像分析
ryodeveloper
1
120
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
250
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
130
Featured
See All Featured
Marketing to machines
jonoalderson
1
5.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
610
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
Balancing Empowerment & Direction
lara
6
1.2k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
750
Evolving SEO for Evolving Search Engines
ryanjones
0
240
Skip the Path - Find Your Career Trail
mkilby
1
170
Measuring & Analyzing Core Web Vitals
bluesmoon
9
880
How to Talk to Developers About Accessibility
jct
2
370
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
220
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