ãã®çš®ã®åºçç©ãåºçããåã«ãç§ã¯éåžžããã®ãããªæ¯èŒã«äžé©åã«åå¿ããããããçš®é¡ã®çä¿¡è ãæããŠããŸãã ãããã£ãŠãã§ããéã客芳çã«ã¹ããŒãªãŒã«ã¢ãããŒãããããã«ããŸãã èšäºã®ãã¹ãŠã®çµè«ã¯ãäºå®ã«åºã¥ããŠã®ã¿è¡ãããŸãã
ããã2ã€ã®ãã©ãããã©ãŒã ãäºãã«æ¯èŒããŸãããç¡æ¡ä»¶ã®åè ã¯ããŸããã ã©ã¡ãã«ãé·æãšçæã®äž¡æ¹ãããã1ã€ãŸãã¯å¥ã®ãªãã·ã§ã³ã§å®å šãªé害ãçºçããŸããããã¯å¿ èŠãªå ŽåããããŸãã
æ¯èŒããçç±
CakePHPãšCodeIgniterã¯ãPHP4ããµããŒããããšããäºå®ãå«ããå€ãã®ç¹ã§éåžžã«äŒŒãŠããŸãã ãããã©ãããã©ãŒã ã®å©ç¹ã«ã€ããŠèšãã°ãå¥ã®ãã©ãããã©ãŒã ã®åŒ·ã¿ãããã«åç §ã§ããŸãã
ã©ã¡ããMVCã¢ãŒããã¯ãã£ã®ãã©ãã€ã ã§åäœããããšãå¯èœã«ããŸããã€ãŸããã¢ãã«ïŒããŒã¿ïŒãã³ã³ãããŒã©ãŒïŒã¢ãã«ããããŒã¿ãå°ãåºããŠã¢ã€ãã¢ãåŸãïŒãããã³ãã¥ãŒïŒãŠãŒã¶ãŒãèŠããã®ïŒãåé¢ããèœåãæå³ããŸãã
ã©ã¡ããã«ãŒãã£ã³ã°ã䜿çšããŸããããã«ãããURLãã³ã³ãããŒã©ãŒå ã®ç¹å®ã®é¢æ°ã«ãã€ã³ãã§ããŸãïŒCakePHPã§ã¯ãããã¢ã¯ã·ã§ã³ãšåŒã³ãŸãïŒã CodeIgniterã¯ã«ãŒãã£ã³ã°ã®æ£èŠè¡šçŸããµããŒãããŠããŸããããã®æ©èœããµããŒãããã«ã¯CakePHPããŒãžã§ã³1.2ããªãªãŒã¹ãããã®ãåŸ ã€å¿ èŠããããŸãã ä¿®æ£ïŒCakePHP 1.1ã¯ã«ãŒãã£ã³ã°ã®æ£èŠè¡šçŸãæ¢ã«ãµããŒãããŠããŸãããããã¯ããã¥ã¡ã³ãã«ã¯åæ ãããŠããŸããã
ã©ã¡ããè¶³å ŽããµããŒãããŠãããã¢ãã«ã«åºã¥ããŠãã¥ãŒãèªåçã«çæããã®ã«åœ¹ç«ã¡ãŸãã CodeIgniterã§ã¯ãscaffoldingãç°¡çŽ åãããURLã«ããŒã¯ãŒããè¿œå ããããšã§åæ§ã®æ©èœã«ã¢ã¯ã»ã¹ã§ããŸãã ããã¯æ¬ ç¹ã ãšæããŸã ç§ã¯å人çãªãããžã§ã¯ããå ¬ã®ç®ç以å€ã§éçºããããšãå€ãããã®ããŒã¯ãŒãã¯éå±ã§ãã
ããå§ããŸããã...
ã·ã³ãã«ãªã¢ãããŒã
CodeIgniterã¯ã·ã³ãã«ã§ããããé åçã§ãããšç¢ºä¿¡ããŠããŸãã ã»ãšãã©ã®äœæ¥ã¯ãã³ã³ãããŒã©ãŒã®äœæãã©ã€ãã©ãªã®ããŒããã¢ãã«ããã®ããŒã¿ã®ååŸãçµæã®ãã¥ãŒãžã®éä¿¡ã§ãã ãã¹ãŠãéåžžã«æ確ã§ãã©ã®ããã«æ©èœããããèŠãããšãã§ããŸãã
CakePHPã®ã·ã³ãã«ãã¯ãèªååïŒãautomagicãïŒã«ãã£ãŠå®çŸãããŸãã ããã«ãããã³ãŒãã£ã³ã°ããã»ã¹ãè¿ éã«ãªããŸãããã«ãŒãã«ãåŠç¿ããªããŠãããä»äœãèµ·ããŠããã®ãããšãã質åãèªåããã ãã§ãã åå¿è ã®éçºè ã«ãšã£ãŠããã®åŽé¢ã¯åã«èœèããã ãã§ãã
ã¢ãã«ãæäœãã
CodeIgniterã§ã®ã¢ãã«ã®æäœã¯éåžžã«èŠèŠçã§ããã次ã®äŸã®ããã«ãããã€ãã®ã³ãã³ããšçµã¿åãããŠæšæºSQLã䜿çšã§ããŸãã
$query = $this->db->getwhere('mytable', array(id => $id), $limit, $offset);
$this->db->select('title')->from('mytable')->where('id', $id)->limit(10, 20);
$query = $this->db->get();
泚ïŒäŸã®2çªç®ã®éšåã§äœ¿çšãããŠãããã§ãŒã³æ¹åŒã¯ãPHP5ã§ã®ã¿æ©èœããŸãã
ã¢ãã«ãªããžã§ã¯ããäœæããŠããŒãããããŸããŸãªã¡ãœããã䜿çšããŠç¹å®ã®ã¿ã¹ã¯ãå®è¡ããããšãã§ããŸãã å¿ èŠã«å¿ããŠãããã¯ã³ã³ãããŒã©ãŒã§ã¯ãªãã¢ãã«ã¬ãã«ã§è¡ãã®ãæé©ã§ãããããã³ãŒãã¯MVCã®ãã¬ãŒã ã¯ãŒã¯å ã«æ®ããŸãã
CakePHPã«ã¯ããã®ã³ã³ãããŒã©ãŒã«å¯Ÿå¿ããã¢ãã«ãèªåçã«ããŒããããšããããããã«ç°ãªãã¢ãããŒãããããŸãïŒåãååã®ã³ã³ãããŒã©ãŒãšã¢ãã«ã¯çžäºæ¥ç¶ãããŸãïŒã ãã®èªåèªã¿èŸŒã¿ãç¡å¹ã«ããç®çã®ã³ã³ãããŒã©ã«èªã¿èŸŒãå¿ èŠã®ããã¢ãã«ãåå¥ã«æå®ããããšãã§ããŸãã
ããã«ãCakePHPã«ã¯ãã¢ãã«éã®é¢ä¿ã確ç«ããã®ã«åœ¹ç«ã€ã¡ã«ããºã ããããŸããããã«ãããããŒã¿ã®ååŸãéåžžã«å®¹æã«ãªããŸãã ããšãã°ãpost_controllerã³ã³ãããŒã©ãŒã§ã¯æ¬¡ã®ããšãã§ããŸãã
$this->Post->Comment->findAllByPostId($id)
ãã®äŸãéžæããã®ã¯ã2ã€ã®ç°ãªãæŠå¿µã瀺ãã®ã«åœ¹ç«ã€ããã§ãã ãŸããæçš¿ã¢ãã«ãä»ããŠã³ã¡ã³ãã¢ãã«ã«ã¢ã¯ã»ã¹ããæ¹æ³ã確èªã§ããŸãïŒæçš¿ã¢ãã«ã§ç¢ºç«ãããé¢é£ä»ãã®ãããã§ãïŒã 第äºã«ã
findAllByPostId
ã¡ãœããã®ãããã§ãã CakePHPã§ã¯ã findByXããã³findAllByXã¯ãšãªã䜿çšããŠããŒã¿ããŒã¹ããã¬ã³ãŒããååŸã§ããŸããXã¯ãéžæãè¡ããããã£ãŒã«ãåã«çžåœããŸãã
Cakeã¯ãé¢é£ããããŒã¿ãèªåçã«ããŒãããèœåã®æãåªããç¹ã®1ã€ãå®èšŒããã®ã«éåžžã«åªããŠãããšæããŸãã ãããèŠãŠãã ããïŒ
$this->Post->findById($id)
ãã®ãªã¯ãšã¹ãã¯ãåºçç©ã ãã§ãªããããã«é¢ããã³ã¡ã³ããæäŸããŸãã ããªãå®çšçã§ãã
æ€èšŒ
ã¢ãã«ã䜿çšããå ŽåãããŒã¿æ€èšŒãåŠçããå¿ èŠããããŸãã CodeIgniterã§ã¯ããã®æ©èœã¯æ€èšŒã¯ã©ã¹ã§è¡šãããŸãã ããã䜿çšããŠãäžé£ã®ã«ãŒã«ã宣èšãããæ€èšŒãªããžã§ã¯ãã«æ·»ä»ãããŸãã æ€èšŒãªããžã§ã¯ãã¯ãURLïŒãŸãã¯ãã©ãŒã ïŒããã®ããŒã¿ãèªåçã«ïŒç§ãæšæž¬ãããšïŒãã§ãã¯ããŸãã ãã¡ãããããã§ãããã©ã®ããã«è¡ãããèªåã§æ±ºããããšãã§ããŸãã Validationã¯ã©ã¹ã¯ãç¹å®ã®ãã£ãŒã«ãã®ãšã©ãŒã¡ãã»ãŒãžãå®çŸ©ããããã»ã¹ã«ã圹ç«ã¡ãŸãã
CakePHPã¯ã2ã€ã®æ¹æ³ã§ã¢ãã«ãçŽæ¥æ€èšŒããŸãã æåã®ã¡ãœããã¯ã¢ãã«å šäœãæ€èšŒãã2çªç®ã®ã¡ãœããã¯åãã£ãŒã«ããåå¥ã«æ€èšŒããç¹å®ã®ãã£ãŒã«ãã®ããŒãåã«ã³ãŒã«ããã¯ã
beforeSave
ãŸãã
CakePHP 1.2ã«ã¯ãæè»æ§ãé«ããããã«åèšèšãããæ€èšŒã·ã¹ãã ãå«ãŸããŸãã
çš®
CakePHPã«ã¯ããã«ããã©ã«ãã®ãã³ãã¬ãŒããå«ãŸãã
title_for_layout
ãš
content_for_layout
2ã€ã®å€æ°ããã
content_for_layout
ã ãã¹ãŠã®ã¢ã¯ã·ã§ã³ã¯ãç¹å®ã®ã¿ã€ãã«èªåçã«é¢é£ä»ããããŸãïŒåã³ãèªåããžãã¯ãïŒã ãããŠããã¡ã€ã«ã«ç¹å¥ãªæ¹æ³ã§ååãä»ããéããã³ã³ãããŒã©ãŒã¯ã¢ãã«ãšãã¥ãŒã«ãã£ãŠèªåçã«ãªã³ã¯ãããŸãã ãããã£ãŠãããããã¹ãŠãåé¿ããç¬èªã®ãã³ãã¬ãŒããšãã¥ãŒãã¡ã€ã«ãå®çŸ©ããããšã¯åé¡ã§ã¯ãããŸããã æ®å¿µãªãããçæããããã¥ãŒã³ãŒããååŸãã䟿å©ãªæ¹æ³ã¯ãªãããããã£ãã·ã¥ã¡ã«ããºã ã®å®è£ ã«é¢ããåé¡ããããŸãã
CodeIgniterã®ã¢ãããŒãã¯ããã·ã³ãã«ã§ãéåžžã®ã€ã³ã¯ã«ãŒãã«ã»ãŒè¿ããã®ã§ãã åãã¡ã€ã«ãã¢ããããŒããããŠåŠçãããŸãã çµã¿èŸŒã¿ã®ãã³ãã¬ãŒãã¯ã©ã¹ïŒãã³ãã¬ãŒãã¯ã©ã¹ïŒããããŸãããçµã¿èŸŒã¿ã®ãã¥ãŒãã³ãã©ãŒïŒçµã¿èŸŒã¿ã®ãã¥ãŒåŠçïŒããåçŽã§ã¯ãããŸããã ãã³ãã¬ãŒãã«ããããŒãšããã¿ãŒãåžžã«å«ããŠãCakePHPã®æ¹æ³ã§ãããè¡ãããšãã§ããŸãããããã¯å€éšã®é¡äŒŒç¹ã«ãããŸããã CodeIgniterã䜿çšãããšããã¥ãŒãšãã£ãã·ã¥ã®ã¡ã«ããºã ããµãŒãããŒãã£ãŸãã¯ã«ã¹ã¿ã ã®ãã³ãã¬ãŒããšã³ãžã³ã«çœ®ãæããããšãã§ããŸãã ïŒãããSmartyã¯CodeIgniterãšCakePHPã®äž¡æ¹ã§é©åã«å®è£ ãããŠããŸãã-翻蚳è 泚ïŒ
çµã¿èŸŒã¿æ©èœ
CodeIgniterã¯ãããã§ã®è£éã§ãFTPãé»åã¡ãŒã«ããã¡ã€ã«ã¢ããããŒããXMLRPCãZipãšã³ã³ãŒãã£ã³ã°ãªã©ã®ã¯ã©ã¹ã®ãããã§ç¡æ¡ä»¶ã«åã¡ãŸãã
åæ§ã«ãCakePHPã¯åºç¯ãªãªããžããªïŒ Bakery ïŒãèªã£ãŠããŸãã CodeIgniterã®ããã«ãå¿ èŠãªã¯ã©ã¹ãç°¡åã«æ¥ç¶ã§ããŸãã ãããããããšïŒç§ã¯ãããããããšããŸããã§ããããCIçšã«æžãããå€ãã®ã¯ã©ã¹ãCakePHPã«æ¥ç¶ããããšã¯å¯èœã§ãã
èªåããŒã
CakePHPã§ã¯ãããŒã¹ã³ã³ãããŒã©ãŒãå€æŽããããšã«ãããã¢ããªã±ãŒã·ã§ã³ãå€§å¹ ã«å€æŽã§ããŸãã ãŸããã¢ãã«ãã¡ã€ã«ã䜿çšããŠã°ããŒãã«ã¡ãœãããäœæããããšãã§ããŸããããã«ããã
beforeFilter
ã
afterFilter
ã
beforeRender
ãªã©ã®ã³ãŒã«ããã¯ã䜿çšããŠã³ã³ãããŒã©ãŒã¬ãã«ã§ç·šéãè¡ãããšãã§ããŸãã åæ§ã«ããã«ããŒãšã³ã³ããŒãã³ãã¯åã ã®ã³ã³ãããŒã©ãŒã¬ãã«ã§ããŒãã§ããŸãã
CodeIgniterã¯ãã¢ã·ã¹ã¿ã³ããã©ã€ãã©ãªãããã³ãã©ã°ã€ã³ãããŒãã§ããŸãããã¢ããªã±ãŒã·ã§ã³å šäœã«å¯ŸããŠã°ããŒãã«ã«ããŒãããŸãã ïŒããã§ã¯ãã³ã³ãããŒã©ãŒã¬ãã«ã®CIã§æ¬¡ã®ãããªæ§é ãå©çšå¯èœã§ãããããèè ãééã£ãŠããŸãïŒ$ this-> load-> whateverïŒïŒ-ãããTranslatorãïŒ
ããã¥ã¡ã³ã
ããã¥ã¡ã³ãã¯ããã¬ãŒã ã¯ãŒã¯ãéçºããããã®ãã¬ãŒã ã¯ãŒã¯ãç解ããããã®éµã§ãã
CodeIgniterã«ã¯ããã¹ãŠã®ã³ã³ããŒãã³ãã®å®å šãªããã¥ã¡ã³ãåããããªã¹ãããããããããã®ã¡ãœãããšãã©ã¡ãŒã¿ãŒãå«ãŸããŠããŸãã CIã«ã¯ãå€æ°ã®ã«ã¹ã¿ã ã³ãŒãã¹ãããããå«ããã©ãŒã©ã ãšWikiããããŸãã
åæ§ã«ãCakePHPã¯ããã»ã©ããŸãç·šæãããŠããŸããã ãã®ããã¥ã¢ã«ã¯å€ããAPIãæäŸãããã®ãé瀺ããŠããŸããã å ã®ããã¥ã¡ã³ãã®åœ¢åŒã«å ããŠãCHMãŸãã¯PDFã§ãªãã©ã€ã³ããŒãžã§ã³ãååŸã§ããŸãã ãã ããCakePHPã«ã¯ãã«ã¹ã¿ã ã®èšäºãšã³ã³ããŒãã³ããåããBakeryããŸã ãããŸãã éçºããŒã ã¯IRCãã£ã³ãã«ïŒirc.freenode.netã®#cakephpïŒãéããŠå€ãã®ããšãæ¯æŽããŠããŸãã ãŸããããªã掻çºãªGoogleã°ã«ãŒã ã
æåŸã«
ç§ã¯ããªãå®çšçãªäººã§ãããæ瀺ããããã¬ãŒã ã¯ãŒã¯ã®äž¡æ¹ã«å€§ããªæªæ¥ããããšå¿ããä¿¡ããŠããŸãã ãããã¯ãããšãã°Symfonyã䜿çšãããªã©ãå®è£ ããããããæé ãªæ¹æ³ã§ãããžã§ã¯ãã®éçºã«ã¢ãããŒãããã®ã«åœ¹ç«ã¡ãŸãã
å人çã«ã¯ãèªåããžãã¯ã®ç¹ã§CodeIgniterããCakePHPã®ãã¡ã³ã§ãã ãããŠããã®å©ç¹ã¯ãããŒãžã§ã³ããããŒãžã§ã³ãžãšããæ確ã«çŸããŸãã
æ確å
ãã®æ¯èŒã¯ãCodeIgniter 1.5.2ã®ããã¥ã¡ã³ããšCakePHP 1.1ã®äœ¿çšçµéšã«åºã¥ããŠããŸãã ç§ã¯æå³çã«ããã©ãŒãã³ã¹ã®åé¡ã«å¯ŸåŠããŸããã§ããããªããªã åãªãã·ã§ã³ãæºåããŠãã¹ãããã®ã¯ããªãåé¡ã§ãã