Barcamp Seoul2 : inspired by Rails, CakePHP
-
Upload
hyunsoo-im -
Category
Technology
-
view
1.668 -
download
0
Transcript of Barcamp Seoul2 : inspired by Rails, CakePHP
꿩대신닭?대안Rails,CakePHP
임현수(프리버즈)[email protected]/http://fribirdz.net
레일스가그렇게재미있다던데...
개발자를행복하게해준다던데..
생산성이좋다던데..
우리서비스도레일스로?
검증?
“허락”받기
퍼포먼스,트러블슈팅,레퍼런스,관련자료
했다가문제생기면,니가책임질래?
대안
흉내내기?따라하기?
RailsCloneFramework
개발언어는그대로PHP로하죠?요즘프레임워크를많이들쓰던데,CakePHP한번써보죠?
러닝커브감소=>생산성향상
팀장님안심시키기
PHP의수많은문서,Lib,경험이용하기
레일스개발방법익숙해지기
PHPFrameworks
http://www.phpit.net/article/ten-different-php-frameworks/
PHPFrameworks• Ambivalence:AJava-MaverickPort
• WACT:WebApplicationComponentToolkit
• Achievo:AgoodRADframework
• Phrame:AJava-Strutsport
• Studs:AJava-StrutsporttoPHP
• Prado:ThewinnerofZendcodingcontest
• PHPOnTrax:aRailsport-PHP5Only
• CakePHP:InspiredbyRailsPHP4/5
• Mojavi:ThefirstMVCframeworkIfellinlovewith
• Symfony:BasedonMojaviandinspiredbyRails
PHPFrameworks
• PHPOnTrax:aRailsport-PHP5Only
• CakePHP:InspiredbyRailsPHP4/5
• Symfony:BasedonMojaviandinspiredbyRails
구글신을영접해보니• CakePHP
• Symfony
• ZendFramework
• PHPonTRAX
구글신을영접해보니• CakePHP
• Symfony
• ZendFramework
• PHPonTRAX
3,760,000개
3,550,000개
1,560,000개
1,380,000개
FlameWars?
• PHPZone:Top10PHPMVCframeworks
• http://www.mustap.com/phpzone_post_73_top-10-php-mvc-frameworks
CakePHP&RoR
• 무엇이무엇이똑같을까?
Rails의대표적인기능(?)
• MVC구조
• 설정보다는관례• Scaffolding
• Validation
• Routing
• Ajax,Javascript,HTMLHelpers
• 플러그인• 마이그레이션
Rails의대표적인기능(?)
• MVC구조
• Model:ORM-ActiveRecord
• View:RHTMLTemplate
• Controller:Controller/Action
Rails
• NamingConvention
• DBTable:Model복수(People)
• Model:단수(Person)
• find_by_<column>
• Controller:Model의복수(People)
CakePHP
• NamingConvention
• DBTable:Model복수(People)
• Model:단수(Person)
• findBy<Column>
• Controller:Model의복수(People)
RoR&CakePHP:관례• User
• id
• name
• created
• ...
• Log
• id
• user_id
• created
• ...
Rails• 폴더구조• app/
• components/
• config/
• db/
• doc/
• lib/
• log/
• public/
• script/
• test/
• tmp/
• vender/
Rails• 폴더구조-app/• app/controllers
• app/helpers
• app/models
• app/views
• app/views/layouts
CakePHP• 폴더구조-app• controllers
• helpers
• models
• views
• views/layouts
• config
• components
• db
• test
• venders
• webroot
• plugins
• tmp
• tmp/log
Rails
• Model-Controller-Action-View
• http://fribirdz.net/people/list/5
• Controller:PeopleController
• Model:Person
• DBTable:people
• ActionMethod:list
• Params:5
• View:/people/list.rhtml
CakePHP
• Model-Controller-Action-View
• http://fribirdz.net/people/list/5
• Controller:PeopleController
• Model:Person
• DBTable:people
• ActionMethod:list
• Params:5
• View:/people/list.thtml
Rails&CakePHP
• Model
• created_at=created
• validationcheck
• Model.find형태도동일
• script/generate->phpbake.php
Rails&CakePHP
• @user=User.find(:first,:conditions=>[“login=?ANDpassword=?”,str1,str2])
• @user=User.find(:all,:select=>“id,name”,:conditions=>{:login=>str1,:password=>str2})
• $this->User->find(array(‘id’,‘name’),array(‘login’=>$str1,‘password’=>$str2));
• $this->User->findAll(array(‘login’=>$str1,‘password’=>$str2));
• User.find_by_login(“matz”)
• User->findByLogin(“matz);
Routing
• Rails
• config/routes.rb
• map.connect‘:controller/:action/id’
• CakePHP
• config/route.php
• $Route->connect('/URI',array('controller'=>'controllerName','action'=>'actionName'));
스케폴딩
classPhonebookConroller<ApplicationController
scaffold:person
end
classPhonebookControllerextendsAppController{
var$scaffold;
}
Controller/ActionclassPhonebookController<ApplicationController deflist @people=Person.find(:all) endend-->/app/views/phonebook/list.rhtml호출
classPhonebookControllerextendsAppController{ var$uses=array(‘Person’); publicfunctionlist() { $rec=$this->Person->findAll(); }}-->/app/views/phonebook/list.thtml호출
써보니까..
• 나중에레일스로갈아타기쉽겠다.
• 당연한이야기지만,90%,100%똑같진않다.
• 루비나레일스의변화만큼빨리변하지않는다.
• 하지만,좋은요소가있다면플러그인으로라도나온다.WebBaker,migrate;;
적용사례
• IDtail.com
• Pumfit.com
• 다나와(카더라통신)• Olalog(PHPonTRAX)
써보니까..
• 굳이“아이건Rails에서되는데...CakePHP에서도똑같이하고싶다..찾아보자!!”하는건아닌듯
• 자료는많이부족.당연히,국내자료전무.소스코드보게됨
• 기본구조,흐름이같다는것에서6-70%의기대만미리해두면좋지않을까.
• CakePHP1.2에서는Rails를벗어나서자체적인길로가고있는듯한느낌도...
적용을생각해볼만한분
• Ruby나RoR을배우기에는부담(정신적,시간적)이있는사람
• 사내신규서비스개발에Rails도입을곧바로하기에는결정권이약한사람
• 사내신규서비스개발에Rails도입을곧바로하기에는부담이큰사람
• Rails를써봤는데,재미있던사람
• 나중에RoR로개발환경을바꿀생각이있는사람(익숙해지기)