2006-03-27 [ĹǯÆüµ]
_ Zend Framework¤ò¤É¤¦»È¤¦¤« ¤½¤Î18
Zend_InputFilter¤Ï¡¢Zend_Filter¤Îµ¡Ç½¤ò»È¤Ã¤ÆÆÃÄê¤ÎÆþÎϡʡáÏ¢ÁÛÇÛÎó¡Ë¤ËÂФ¹¤ë¥Õ¥£¥ë¥¿¥ê¥ó¥°¤ò¹Ô¤¦¤¿¤á¤Î¥¯¥é¥¹¡£¥³¥ó¥¹¥È¥é¥¯¥¿¤ÇÆþÎÏÃͤòÅϤ·¡¢°Ê¹ß¤Ï¤½¤ÎÆþÎÏÃͤΥ¡¼Ì¾¤ËÂФ·¤Æ¡¢Zend_Filter¤ÈƱ̾¤Î¥á¥½¥Ã¥É¤ò¥³¡¼¥ë¤¹¤ë¤È¡¢¥Õ¥£¥ë¥¿¥ê¥ó¥°¤ä¥Ð¥ê¥Ç¡¼¥·¥ç¥ó¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤¤ë¡£
¶ñÂÎŪ¤Ë¤Ï¡¢
$filteredPost = new Zend_InputFilter($_POST);
if (!$filteredPost->isAlpha('name')) {
// ÉÔÀµ¤ÊÆþÎÏÃͤˤè¤ë¥¨¥é¡¼½èÍý
} else {
$name = $filteredPost->getAlpha('name'); // ifʸ¤Çalpha¤Ç¤¢¤ë¤³¤È¤Ï³ÎÄꤷ¤Æ¤¤¤ë¤ó¤Ç¡¢¼ÂºÝ¤Ë¤ÏgetRaw¤Ç¤¤¤¤¤±¤É
}
¤Ê¤ó¤Æ´¶¤¸¤Ë¤Ê¤ë¤ó¤À¤±¤É¡¢ÆâÉôŪ¤ËZend_Filter¤ò»È¤Ã¤Æ¤¤¤ë¤ó¤Ç¡¢¤½¤Ã¤Á¤Î¾Ò²ð¤ÎÄɵ¤Ç²òÀ⤷¤¿¤è¤¦¤Ë¡¢¤½¤ì¤é¤ò¤Þ¤È¤á¤Æ¡¢
$filteredPost = new Zend_InputFilter($_POST);
if (!$name = $filteredPost->isAlpha('name')) {
// ÉÔÀµ¤ÊÆþÎÏÃͤˤè¤ë¥¨¥é¡¼½èÍý
} else {
// $name¤ò»È¤Ã¤¿½èÍý
}
¤È¤¤¤Ã¤¿·Á¤Ç½ñ¤¯¤³¤È¤â¤Ç¤¤ë¡£´·¤ì¤ë¤Þ¤Ç¤Ï²ÄÆÉÀ¤¬Íî¤Á¤ë¡Êis¡Á¤Ç¼ÂÂΤ¬ÊÖ¤ë¤Î¤«¤è¡Ë¤ó¤Ç¡¢²¶¤Ï¤¢¤ó¤Þ¤ê¹¥¤¤¸¤ã¤Ê¤¤¤±¤É¡£
¤Á¤Ê¤ß¤ËZend_InputFilter¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤Î°ú¿ô¤Ë¤Ï¡¢Ä̾ï$_POST¤ß¤¿¤¤¤Ê¥¹¡¼¥Ñ¡¼¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤Ë¥»¥Ã¥È¤µ¤ì¤¿ÆþÎÏÃͤòÅϤ¹¤ï¤±¤À¤±¤É¡¢¶²¤í¤·¤¤¤³¤È¤Ë¤³¤Î°ú¿ô¤ËÂФ·¤Æ¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤ÏÇ˲õŪ¤ÊÁàºî¤¬¹Ô¤ï¤ì¤ë¡£
$filteredPost = new Zend_InputFilter($_POST);
¤È¤ä¤Ã¤¿¤é¡¢¤³¤³¤Ç$_POST¤ÏNULL¤Ë¥»¥Ã¥È¤µ¤ì¤Æ¤·¤Þ¤¤¡¢°Ê¹ß$_POSTÁêÅö¤Î¥Ç¡¼¥¿¤Ë¤Ï$filteredPost¤òÄ̤·¤Æ¤·¤«¥¢¥¯¥»¥¹¤Ç¤¤Ê¤¤¤è¤¦¤Ë¤Ê¤ë¡£
²¶¤Ï¡¢¤³¤ì¤Ã¤Æ¤â¤Î¤¹¤´¤¯Â礤ʤªÀ¤ÏääƵ¤¤¬¤¹¤ë¤ó¤À¤±¤É¡¢¤É¤¦¤Ê¤ó¤À¤í¤¦¡©¡¡¤Á¤Ê¤ß¤ËÂè2°ú¿ô¤Ë¡¢
$filteredPost = new Zend_InputFilter($_POST, false);
¤Ê¤ó¤Æ´¶¤¸¤ÇFALSE¤ò»ØÄꤷ¤Æ¤ä¤ë¤È¡¢¸µ¤Î¥¹¡¼¥Ñ¡¼¥°¥í¡¼¥Ð¥ëÊÑ¿ô¡Ê¤Ë¤Ï¸Â¤é¤Ê¤¤¤±¤É¡¢Âè1°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤¿ÊÑ¿ô¡Ë¤Î¥ê¥»¥Ã¥È¤Ï¹Ô¤ï¤ì¤Ê¤¤¡£¥Ç¥Õ¥©¥ë¥È¤Ï¤³¤Ã¤Á¤Ë¤·¤Æ¤ª¤¤¤¿Êý¤¬Îɤ¯¤Ê¤¤¤«¡©
¤Á¤Ê¤ß¤Ë¸½¾õ¤Ç¤Ï¤³¤ÎZend_InputFilter¤Ã¤Æ¡¢¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Î°ìÉô¤È¤·¤Æ¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Î¾¤Î¥³¡¼¥É¤«¤éÍøÍѤµ¤ì¤¿¤ê¤Ï¤·¤Æ¤¤¤Ê¤¤¤ó¤À¤±¤É¡¢Zend_Controller_Router¤Ë¤Ï¡¢$_SERVER¤«¤éľÀÜREQUEST_URI¤ò¼èÆÀ¤·¤Æ¤¤¤ë¤È¤³¤í¤Ë¡¢
@todo Replace with Zend_Request object
¤Ê¤ó¤Æ¤³¤È¤¬½ñ¤«¤ì¤Æ¤¤¤ë¡£¤È¤¤¤¦¤³¤È¤Ï¡¢¤â¤·¤«¤·¤¿¤é¡¢
class Zend_Request
{
var $_get = null;
/* snip */
public function __construct()
{
$this->_get = new Zend_InputFilter($_GET);
/* snip */
}
function GET()
{
return $this->_get;
}
/* snip */
}
¤Ê¤ó¤Æ¥¯¥é¥¹¤¬Åо줷¤Æ¡¢ControllerÇÛ²¼¤«¤é¤½¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ë¥¢¥¯¥»¥¹¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ë¤ó¤¸¤ã¤Ê¤«¤í¤¦¤«¡©¡¡¤Á¤Ê¤ß¤Ë»È¤¤Êý¤È¤·¤Æ¤Ï¡¢
$req = new Zend_Request();
$name = $req->GET()->getAlpha('name'); // $_GET['name']¤Î¥¢¥ë¥Õ¥¡¥Ù¥Ã¥ÈÍ×ÁǤΤߤò¼èÆÀ
¤ß¤¿¤¤¤Ê¥¤¥á¡¼¥¸¤Í¡£
¤¿¤À¤³¤¦¤ä¤Ã¤Á¤ã¤¦¤È¡¢
- ¥Ç¥Õ¥©¥ë¥È¤Ç¤¹¤Ù¤Æ¤ÎÆþÎÏÃÍ·Ï¥¹¡¼¥Ñ¡¼¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤ò¥ê¥»¥Ã¥È¤·¤Æ¤¤¤¤¤Î¤«
- ¾åµ¤Î¤è¤¦¤Ê¥ª¥Ö¥¸¥§¥¯¥È¤Ï¡¢¤µ¤Þ¤¶¤Þ¤Ê¾ì½ê¤ÇÍøÍѤ¹¤ë¤³¤È¤Ë¤Ê¤ë¤±¤É¡¢¤½¤Î¥¢¥¯¥»¥¹¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ï¤É¤¦¤¹¤ë¡©¡Ê¥·¥ó¥°¥ë¥È¥ó¡©¡Ë
¤¢¤¿¤ê¤¬Èù̯¤Ê¤ó¤Ç¡¢¤Þ¤À¸ø³«¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¤«¡©
_ ¥¯¥¹¥ê¤À¤±¤â¤é¤Ã¤Æ¤¤¿
¤½¤í¤½¤í²ÖÊ´¾É¤Î¥¯¥¹¥ê¤¬ÀÚ¤ì¤ëº¢¤Ê¤Î¤Ç¡¢½èÊý䵤À¤±¤â¤é¤Ã¤Æ3½µ´Öʬ¥¯¥¹¥ê¤òÄɲᣤ½¤ì¤Ë¤·¤Æ¤â¡¢¤³¤Î2¡¢3Æü¤Ï²ÖÊ´¤¬¤Ò¤É¤¤¤³¤È¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Ê¡£¤Á¤ç¤Ã¤È¥¯¥¹¥ê¤ò°û¤à´Ö³Ö¤¬¶õ¤¯¤È¡¢ÌÜÉ¡¤¬¤Ò¤É¤¤¤³¤È¤Ë¤Ê¤ë¡£º£½µËö¤Ï²ñ¼Ò¤Î²Ö¸«¤Ê¤ó¤À¤±¤É¡¢¤½¤ó¤Ê¤Î¤Ë¤¤¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ê¤ó¤À¤í¤¦¤«¡©
¤½¤¦¤¤¤ä½Âë¤Îºù¤Ï¤â¤¦¤Û¤È¤ó¤ÉËþ³«¤À¤Í¡£Ä̤ꤹ¤¬¤ê¤Ë¡¢ºù¥öµÖ¤Îºä¤Î¼Ì¿¿¤ò»£¤Ã¤Æ¤¤¿¤±¤É¡¢¤Ê¤ó¤«¤Ò¤É¤¤¼Ì¤ê¤À¡£¤³¤ì¤¸¤ãÁ´Á³ºù¤¬¤¤ì¤¤¤Ë¸«¤¨¤Ê¤¤¤Í¡£Ìڤβ¼¤«¤é¾å¤Ë¸þ¤«¤Ã¤Æ»£¤ì¤Ð¡¢¤â¤¦¤Á¤ç¤Ã¤È¤¤ì¤¤¤Ë¼è¤ì¤¿¤À¤í¤¦¤Ë¡£·ÈÂӤβèÌ̤À¤ÈµÕ¸÷¤«¤É¤¦¤«¤ÎȽÃǤ¬¤¤¤Þ¤¤¤Á¤ï¤«¤é¤Ê¤¤¤ó¤À¤è¤Ê¡£
2006-03-26 [ĹǯÆüµ]
_ Zend Framework¤ò¤É¤¦»È¤¦¤« ¤½¤Î17
¤½¤í¤½¤íËܳÊŪ¤Ë¡¢¤¤¤ï¤æ¤ë¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤È¤Ï´Ø·¸¤Ê¤¤¡¢¤¿¤À¤Î¥é¥¤¥Ö¥é¥ê¤·¤«»Ä¤Ã¤Æ¤¤¤Ê¤¤¤Ê¡¼¡£¤¢¤È¤Ï¤»¤¤¤¼¤¤¥Õ¥£¥ë¥¿¡¼¼þ¤ê¤¬¡¢¤Á¤ç¤Ã¤È¤Ï¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Î°ìÉô¤Ã¤Ý¤¤¤«¡©
ÆþÎÏ¥Õ¥£¥ë¥¿¡¼¤Îµ¡Ç½¤ò¼õ¤±»ý¤Ã¤Æ¤¤¤ë¤Î¤Ï¡¢ÈÆÍÑ¥Õ¥£¥ë¥¿¡¼´Ø¿ô·²¤ÎZend_Filter¤È¡¢¤½¤ì¤ò»È¤Ã¤Æ¼ÂºÝ¤ÎÆþÎÏÃͤò¥Õ¥£¥ë¥¿¥ê¥ó¥°¤¹¤ëZend_InputFilter¤ÎÆó¤Ä¡£
Zend_Filter¤Ï¥¯¥é¥¹¤È¤·¤ÆÀë¸À¤µ¤ì¤Æ¤¤¤ë¤±¤É¡¢public static function¤·¤«¤Ê¤¤¤ó¤Ç¡¢¼Â¼Á¤Ï̾Á°¶õ´Ö¤ÎÂå¤ï¤ê¤À¤Í¡£¤Ç¡¢»ý¤Ã¤Æ¤¤¤ëµ¡Ç½¤È¤·¤Æ¤Ï¡¢
- Zend_Filter::getAlpha($value) - ¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È°Ê³°¤Îʸ»ú¤ò½üµî¤·¤ÆÊÖ¤¹¡£01ab!#23cd ¢ª abcd¡£
- Zend_Filter::getAlnum($value) - ¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤È¿ô»ú°Ê³°¤Îʸ»ú¤ò½üµî¤·¤ÆÊÖ¤¹¡£01ab!#23cd ¢ª 01ab23cd¡£
- Zend_Filter::getDigit($value) - ¿ô»ú°Ê³°¤Îʸ»ú¤ò½üµî¤·¤ÆÊÖ¤¹¡£01ab!#23cd ¢ª 0123¡£
¤ß¤¿¤¤¤Ê´¶¤¸¤Ç¡¢¸µ¤È¤Ê¤ëʸ»úÎ󤫤顢»ØÄꤷ¤¿Ê¸»úÍ×Áǰʳ°¤ò½üµî¤·¤¿Ê¸»úÎó¤ò¼èÆÀ¤¹¤ë¥Ñ¥¿¡¼¥ó¤Î¤â¤Î¤¬¤¤¤¯¤Ä¤«¡£
- Zend_Filter::getDir($value) - ¥Ñ¥¹¤«¤é¥Ç¥£¥ì¥¯¥È¥êÉôʬ¤Î¤ß¤òÃê½Ð¤¹¤ë¡£¤Ã¤Ä¡¼¤«Ã±¤Ëbasedir´Ø¿ô¡£
- Zend_Filter::getInt($value) - int¤Ë¥¥ã¥¹¥È¤·¤ÆÊÖ¤¹¡£
- Zend_Filter::getLength($value, $length = NULL) - ºÇ½é¤Înʸ»ú¤òÊÖ¤¹¡£
- Zend_Filter::getPath($value) - ÁêÂХѥ¹¤òÀäÂХѥ¹¤ËÊÑ´¹¤¹¤ë¡£¤Ã¤Ä¡¼¤«Ã±¤Ërealpath´Ø¿ô¡£
- Zend_Filter::noTags($value) - HTML¥¿¥°½üµî¡£striptags¡£
- Zend_Filter::noPath($value) - ¥Ñ¥¹¤«¤é¥Ç¥£¥ì¥¯¥È¥êÉôʬ¤ò½üµî¡£basename¡£
¤ß¤¿¤¤¤Êʸ»úÎóÊÑ´¹·Ï¤Î¤â¤Î¡£
- Zend_Filter::isAlpha($value) - ¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤Î¤ß¤Ç¹½À®¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÊÖ¤¹¡£
¤ß¤¿¤¤¤Ê¤¢¤ëɽ¸½·Á¼°¤Ë¹çÃפ·¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÊÖ¤¹¤â¤Î¡Ê¤³¤Î¥Ñ¥¿¡¼¥ó¤Ï¤¿¤¯¤µ¤ó¤¢¤ë¤ó¤Ç¤¤¤Á¤¤¤ÁÎóµó¤·¤Ê¤¤¡Ë¤¬¤¢¤ë¡£
¤¦¡¼¤ó¡¢¤³¤Î¥¯¥é¥¹¡Ê¥é¥¤¥Ö¥é¥ê¡Ë¤Ï¤Ê¤ó¤«¥Ó¥ß¥ç¡¼¤Ê½ÐÍè¤À¤Ê¡¼¡£
Alpha¤äAlphaNum¡¢Digit¤¢¤¿¤ê¤Ë´Ø¤¹¤ë´Ø¿ô¤Ï¡¢¤Þ¤¢ÈÆÍÑÀ¤¬¤¢¤ë¤«¤é¤³¤¦¤¤¤¦·Á¤Ç»ý¤Ã¤Æ¤¤¤Æ¤â¤¤¤¤¤À¤í¤¦¡£¤Ç¤â¥Ñ¥¹Áàºî¤Ê¤ó¤Æ¡¢Ê̤ËPHP¤Î´Ø¿ô¤½¤Î¤Þ¤Þ»È¤¨¤Ð¤¤¤¤¤¸¤ã¤ó¡£Zend_Filter¤Ã¤Æ³Ì¤Ë¤«¤Ö¤»¤¿Êý¤¬»È¤¤¤ä¤¹¤¯¤Ê¤Ã¤Æ¤¤¤ë¤È¤Ï»×¤¨¤Ê¤¤¡£
¤Þ¤·¤Æ¤ä¡¢isDate¤È¤«isPhone¤È¤«isZip¤È¤«ÃæÅÓȾü¤ËÆÃÄê¤Î¡ÊÃϰè¤Î¡Ë¥Ñ¥¿¡¼¥ó¤ËÂбþ¤·¤¿´Ø¿ô¤ò¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Îɸ½àµ¡Ç½¤Î°ì¤Ä¤È¤·¤Æ»ý¤Ã¤Æ¤¤¤é¤ì¤Æ¤â¡¢¤¤¤Þ¤¤¤Á»È¤¨¤Ê¤¤µ¤¤¬¤¹¤ë¡£¤¿¤È¤¨¤ÐisPhone¤Ê¤ó¤Æ¡¢¥¢¥á¥ê¥«¤ÎÃϰ襳¡¼¥É°ìÍ÷¤È¤«Ä¾Ãͤǻý¤Ã¤Æ¤¤¤¿¤ê¤·¤Æ¡¢¤½¤ÎÊդΥÁ¥§¥Ã¥¯¤Þ¤Ç¹Ô¤Ã¤Æ¤¤¤ë¤±¤É¡¢¤³¤ì¤Ã¤Æ¤É¤¦¤è¡©
°ì±þ¥¢¥á¥ê¥«°Ê³°¤Î¹ñ¤Î¥Ç¡¼¥¿¤â¡¢»ý¤È¤¦¤È»×¤¨¤Ð¤â¤Æ¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¤é¡¢¾ÍèŪ¤Ë¤Ï¾¯¤Ê¤¯¤È¤â¿ô¥«¹ñʬ¤Î¥Ñ¥¿¡¼¥ó¤ÏÆþ¤ì¤ë¤Ä¤â¤ê¤Ê¤ó¤À¤í¤¦¤±¤É¡¢¤Ç¤â¤³¤¦¤¤¤¦¥¢¥×¥í¡¼¥Á¤¸¤ã´°Á´¤Ê¹ñºÝ²½Âбþ¤Ï¤Ç¤¤Ê¤¤¤è¤Ê¡¼¡£¤³¤¦¤¤¤¦Èù̯¤Êµ¡Ç½¤Ï¤â¤Ã¤Èº¬ËÜŪ¤Ë¥×¥é¥¬¥Ö¥ë¤ËÀ߷פ¹¤ë¤«¡¢¤¸¤ã¤Ê¤«¤Ã¤¿¤éɸ½à¤Ç¤Ï¼è¤ê¹þ¤Þ¤Ê¤¤Êý¤¬¤¤¤¤µ¤¤¬¤¹¤ë¤Ê¡¼*1¡£
¤È¡¢Ä¹¤¯¤Ê¤Ã¤Æ¤¤¿¤Î¤Ç¤³¤³¤Ç¤¤¤Ã¤¿¤ó½ªÎ»¡£Zend_InputFilter¤Ë¤Ä¤¤¤Æ¤Ï¸å¤Ç¡£
ÄûÀµ
Zend_Filter::isAlpha($value) - ¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤Î¤ß¤Ç¹½À®¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÊÖ¤¹¡£
¤ß¤¿¤¤¤Ê¤¢¤ëɽ¸½·Á¼°¤Ë¹çÃפ·¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÊÖ¤¹¤â¤Î¡Ê¤³¤Î¥Ñ¥¿¡¼¥ó¤Ï¤¿¤¯¤µ¤ó¤¢¤ë¤ó¤Ç¤¤¤Á¤¤¤ÁÎóµó¤·¤Ê¤¤¡Ë¤¬¤¢¤ë¡£
¤È½ñ¤¤¤¿¤±¤É¡¢¤³¤Î¼ê¤Îis¡Á·Ï¤Î´Ø¿ô¤ÏboolÃͤòÊÖ¤¹°ìÈÌŪ¤ÊValidate´Ø¿ô¤Ç¤Ï¤Ê¤«¤Ã¤¿¡£Validate¤Ë¼ºÇÔ¤·¤¿¾ì¹ç¤Ïfalse¤òÊÖ¤¹¤±¤É¡¢Validate¤ËÀ®¸ù¤·¤¿¾ì¹ç¤Ï¡¢°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤¿$value¤ÎÆâÍÆ¤ò¤½¤Î¤Þ¤ÞÊÖ¤¹¡£
¤Ä¤Þ¤ê¡¢
if ($value = Zend_Filter::isAlpha($value)) {
// $value¤Ë¤Ï¸µ¤Î$value¤¬Æþ¤Ã¤Æ¤¤¤ë¤Î¤Ç
// ¤½¤Î¤Þ¤Þ$value¤ò»È¤Ã¤¿½èÍý¤ò½ñ¤±¤ë
} else {
// $value¤Ë¤ÏFALSE¤¬ÊÖ¤µ¤ì¤Æ¤¤¤ë
}
¤Ê¤ó¤Æ½ñ¤Êý¤¬¤Ç¤¤ë¤Ã¤Ä¡¼¤Î¤¬¡¢¤³¤ÎZend_Filter¡Ê¤ª¤è¤ÓZend_InputFilter¡Ë¤Î¹©Éפ餷¤¤¡£
Zend_Filter¤À¤È¤³¤Î¹©ÉפˤϤ¢¤Þ¤ê°ÕÌ£¤¬¤Ê¤¤¤±¤É¡¢Zend_InputFilter¤Ç¤³¤Îɽ¸½¤ò»È¤¦¤È¥³¡¼¥É¤¬1¹Ô¾Êά¤Ç¤¤ë¡ÊValidate¹Ô¤ÈFilter¤µ¤ì¤¿Ãͤò¼èÆÀ¤¹¤ë¹Ô¤ò2¹Ô¤Ëʬ¤±¤ëɬÍפ¬¤Ê¤¤¡Ë¤ó¤ÇÊØÍø¤Ç¤·¤ç¡¢¤Ã¤Æ¤³¤È¤é¤·¤¤¡£
¤Ç¤â²¶Åª¤Ë¤Ï¡¢¤³¤Î¼ê¤Î´ðËÜŪ¤Ê¥í¥¸¥Ã¥¯¤Ï¡¢ÊѤ˹©Éפ·¤Æ¹Ô¿ô¤òºï¸º¤¹¤ë¤è¤ê¤â¡¢ÆÉ¤ó¤Ç¤ï¤«¤ê¤ä¤¹¤¤Êý¤¬¤¤¤¤µ¤¤¬¤¹¤ë¤ó¤À¤±¤É¤Í¡£
*1 ¤Ã¤Æ¤Î¤Ï¡¢HTML_QuickForm¤ÎDate¼þ¤ê¤È¤«¤ò¸«¤¿¤È¤¤Ë¤â»×¤Ã¤¿¤·¡¢¤¢¤ì¤òÈÆÍÑŪ¤ËÆüËܸìÂбþ¤¹¤ë¤Î¤Ï·ë¹½¶ìÏ«¤·¤¿
2006-03-25 [ĹǯÆüµ]
_ ¤³¤Ã¤Á¤ÎÊý¤¬¤Þ¤·¤«¡©
¡ÖZend Framework¤ò¤É¤¦»È¤¦¤« ¤½¤Î14¡×¤ÎºÇ¸å¤ÎÊý¤Ç¡¢Zend_Db¤ò»È¤¦¤è¤ê¤âPEAR DB_DataObject¤ò»È¤Ã¤¿Êý¤¬¤¤ì¤¤¤Ë½ñ¤±¤¿¤Ê¡¼¤È¤¤¤Ã¤Æ¤¤¤¿¥µ¥ó¥×¥ë¤Î¡¢Zend_Db¤ò»È¤Ã¤¿¤â¤¦¤Á¤ç¤Ã¤È¤Þ¤·¤Ê½ñ¤Êý¤ò»×¤¤¤Ä¤¤¤¿¡£
class Stock extends Zend_Db_Table_Row {}
class Product extends Zend_Db_Table_Row {}
$select = $db->select();
$select->from('stock', 'stock.id as stockid');
$select->join('product', 'stock.product = product.id', 'product.id as productid');
$select->where('product.kind = ?', 'book');
$sql = $select->__toString();
$rows = $db->fetchAll($sql);
$stockTable = new Stock();
$productTable = new Product();
foreach ($rows as $row) {
$stock = $stockTable->find($row['stockid']);
$product = $productTable->find($row['productid']);
if ($stock->amount == 0) {
// ºß¸Ë¤¬¤Ê¤¤Ëܤξì¹ç¤Î½èÍý
}
}
Ëè¥ë¡¼¥×¤Çɬ¤º2²ó¤º¤Ä1¹Ô¥ì¥³¡¼¥É¤ò¼è¤Ã¤Æ¤¯¤ë¥¯¥¨¥ê¡¼¤¬Åꤲ¤é¤ì¤Æ¤¦¤¶¤¤¤±¤É¡¢primary key¤ËÂФ¹¤ë¸¡º÷¤À¤«¤é¸¡º÷¼«ÂΤϹ⮤À¤·¡¢Ëöü¤Ç¤Î¥ì¥³¡¼¥É¥ì¥Ù¥ë¤ËÂФ¹¤ëPHP¥³¡¼¥É¤«¤é¤ÎÁàºî¤Ï¡¢¤½¤ì¤¾¤ìZend_Db_Table_Row¤ËÂФ¹¤ëÁàºî¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤ó¤Ç¡¢Ï¢ÁÛÇÛÎó¤ËÂФ¹¤ëÁàºî¤ÈÈæ¤Ù¤ë¤È°ÂÁ´¤À¡£O/R¥Þ¥Ã¥Ñ¡¼¤ò»È¤¦¤ó¤Ê¤é¡¢ÆâÉôŪ¤ÊDB¤È¤Î¤ä¤ê¤È¤ê¤¬Â¿¾¯¾éĹ¤Ç¤â¡¢PHP¥³¡¼¥É¾å¤Î¾éŤµ¤¬¾¯¤Ê¤¤Êý¤¬¤Þ¤·¤À¤í¤¦¡£
Zend_Db_Table¤Ë¤è¤ëO/R¥Þ¥Ã¥Ñ¡¼¤ò»È¤Ã¤¿Áàºî¤Ï¡¢´ðËÜŪ¤Ë¤³¤¦¤¤¤Ã¤¿´¶¤¸¤Î¥¢¥×¥í¡¼¥Á¤Ç½ñ¤¯¤è¤¦¤Ë¤Ê¤ë¤Î¤«¤Ê¡©
_ Zend Framework¤ò¤É¤¦»È¤¦¤« ¤½¤Î16
¤¢¤È¤Õ¤Ä¤¦¤Ë»È¤¤¤½¤¦¤Ê¥¯¥é¥¹¤È¤¤¤Ã¤¿¤é¤É¤ì¤À¤í¤¦¤Ê¡¼¡¢¤È¤Ä¤é¤Ä¤é¤Ê¤¬¤á¤Æ¤ß¤Æ¡¢²¶Åª¤Ë½ÅÍ×ÅÙ¤¬¹â¤½¤¦¤À¤Ã¤¿Zend_Log¥¯¥é¥¹¤ò¸«¤Æ¤ß¤¿¡£
¤Þ¤º¡¢´ðËÜŪ¤ËZend_Log¥¯¥é¥¹¤Ç¤Ï¡¢¤¹¤Ù¤Æ¤Î¥í¥°½ÐÎϤϡ¢
Zend_Log::log($message, $level, $logName_or_fields, $logName);
¤È¤¤¤¦public static¤Ê¥¯¥é¥¹¥á¥½¥Ã¥É¤ò·Ðͳ¤·¤Æ¹Ô¤¦¡£¥í¥°½ÐÎϤ¬¤·¤¿¤±¤ì¤Ð¤É¤³¤Ç¤â
Zend_Log::log('log message', Zend_Log::LEVEL_INFO);
¤Ê¤ó¤Æ½ñ¤¯¤À¤±¤Ç¤¤¤¤¡£¤¿¤À¤·¡¢¤³¤ì¤À¤±¤Ç¤Ï¥í¥°¤òµÏ¿¤¹¤ë¼ÂÂΤ¬¤Ê¤¤¤ó¤Ç¡¢²¿¤âµ¯¤³¤é¤Ê¤¤¤±¤É¡£
¥í¥°µÏ¿¤Î¼ÂÂΤϡ¢Zend_Log_Adapter_*¤È¤¤¤¦¥¯¥é¥¹¤¬¼õ¤±»ý¤Ä¡£¤³¤ì¤ÏZend_Log_Adapter_Interface¤ò»ý¤Ä¥¯¥é¥¹·²¤Ç¡¢open¡¢write¡¢close¡¢setOption¤È¤¤¤¦4¤Ä¤Î¥á¥½¥Ã¥É¤¬¼ÂÁõ¤µ¤ì¤Æ¤¤¤ì¤Ð¤¤¤¤¡£
ɸ½à¤Ç¤Ï
- Zend_Log_Adapter_Console - ¥³¥ó¥½¡¼¥ë½ÐÎÏÍÑ
- Zend_Log_Adapter_Db - DB½ÐÎÏÍÑ
- Zend_Log_File - ¥Õ¥¡¥¤¥ë½ÐÎÏÍÑ
- Zend_Log_Null - ²¿¤â¤·¤Ê¤¤¡£¤³¤ì¤Ã¤Æ²¿¤Î¤¿¤á¤Ë¤¢¤ë¤ó¤À¤Ã¤±¡©¡¡Null Log¤Î°ÕÌ£¤¬ÀâÌÀ¤µ¤ì¤Æ¤¤¤ë¥Æ¥¥¹¥È¤ò¤É¤³¤«¤ÇÆÉ¤ó¤Àµ¤¤¬¤¹¤ë¤ó¤À¤±¤É¡£
¤¬ÍѰդµ¤ì¤Æ¤¤¤ë¡£¥Õ¥¡¥¤¥ë¥í¥°¤ò½ÐÎϤ·¤¿¤±¤ì¤Ð¡¢
Zend_Log::registerLogger(new Zend_Log_Adapter_File('/path/to/log');
¤Ê¤ó¤Æ¤¢¤é¤«¤¸¤á¥í¥°½ÐÎÏÍÑAdapter¤òÅÐÏ¿¤·¤Æ¤ª¤±¤Ð¤¤¤¤¡£¥Þ¥ë¥Á¥í¥°¤Ë¤âÂбþ¤·¤Æ¤¤¤Æ¡¢
Zend_Log::registerLogger(new Zend_Log_Adapter_File('/path/to/log'), 'file');
Zend_Log::registerLogger(new Zend_Log_Adapter_Db($db /* Zend_Db_Adapter */, 'tablename'), 'db');
¤Ê¤ó¤Æ´¶¤¸¤Ç¡¢Âè2°ú¿ô¤Ë¥í¥°Ì¾¤ò¤Ä¤±¤ÆÊ£¿ô¤ÎAdapter¤òÅÐÏ¿¤·¤Æ¤ª¤¯¡£ÆÃÄê¤ÎAdapter¤ËÂФ·¤ÆÁàºî¤·¤¿¤¤¾ì¹ç¤Ï¡¢¤³¤³¤Ç¤Ä¤±¤¿¥í¥°Ì¾¤ò»ØÄꤷ¤¿¡¢Zend_Log¤Î¥¯¥é¥¹¥á¥½¥Ã¥É¤ò¸Æ¤Ö¤³¤È¤Ë¤Ê¤ë¡£¥í¥°Ì¾¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¤Ï¥Ç¥Õ¥©¥ë¥È¤Î¥í¥°Ì¾¡Ê'LOG'¡Ë¤¬»È¤ï¤ì¤ë¡£
½ÐÎÏÀ褴¤È¤Ë½ÐÎϤò¹Ô¤¦LogLevel¤òÀßÄꤷ¤¿¤¤¾ì¹ç¤Ï¡¢
Zend_Log::setLevel(Zend_Log::LEVEL_DEBUG, 'debuglog'); // debuglog¤Ï¥í¥°Ì¾ Zend_Log::setMask(Zend_Log::LEVEL_ALL ~ Zend_Log::LEVEL_DEBUG); // ¥í¥°Ì¾¤ò¾Êά¤·¤¿¾ì¹ç¤Ïɸ½à¤Î¥í¥°
¤Ê¤ó¤Æ´¶¤¸¤Ç¥»¥Ã¥È¤¹¤ì¤Ð¤¤¤¤¡£
¤ó¤À¤±¤É¡¢»î¤·¤Æ¤ß¤¿¤é¤¦¤Þ¤¯Æ°¤«¤Ê¤«¤Ã¤¿¡£¥½¡¼¥¹¤ò¸«¤Æ¤ß¤¿¤é¡¢Zend/Log.php¤Î382¹ÔÌܤ¬
if ($level | $logger->_levelMask) {
¤Ë¤Ê¤Ã¤Æ¤¿¤±¤É¡¢¤³¤ì¤Ã¤Æ
if ($level & $logger->_levelMask) {
¤Î´Ö°ã¤¤¤À¤è¤Í¡£°ì±þ¤³¤Ã¤Á¤âML¤ËÅꤲ¤Æ¤ª¤¤¤¿¡£
¤Á¤Ê¤ß¤ËÆâÉôŪ¤Ë¡ÖZF¡×¤È¤¤¤¦¥í¥°Ì¾¤Ï¡¢Zend FrameworkÆâÉô¤Î¥í¥°½ÐÎÏÍѤËͽÌó¤µ¤ì¤Æ¤¤¤ëÌÏÍÍ¡£Zend Framework¥ì¥Ù¥ë¤Îưºî¤¬²ø¤·¤¤¾ì¹ç¤Ê¤ó¤«¤Ë¤Ï¡¢ZF¤È¤¤¤¦Ì¾Á°¤Ç¥í¥°½ÐÎÏÀè¤òÅÐÏ¿¤·¤Æ¤ª¤±¤Ð¡¢¥Õ¥ì¡¼¥à¥ï¡¼¥¯¥ì¥Ù¥ë¤Ç¤Î¥í¥°¤¬Êݸ¤µ¤ì¤ë¤è¤¦¤Ë¤Ê¤ë¤ó¤À¤í¤¦¡£¤¿¤À¸½»þÅÀ¤Ç¤ÏZend Framework¤ò¹½À®¤¹¤ë¥Õ¥¡¥¤¥ë¤Ç¡¢¤½¤Îµ¡Ç½¤ò»È¤Ã¤Æ¤¤¤ë¤â¤Î¤Ï¤Ê¤¤¤ß¤¿¤¤¤À¤±¤É¡£
¤È¤Þ¤¢°ìÄ̤ê¤Î¤³¤È¤Ï¤Ç¤¤ë¤ó¤À¤±¤É¡¢¥Þ¥ë¥Á¥í¥°¤Îµ¡Ç½¤ò¥Ç¥Õ¥©¥ë¥È¤Ç¼è¤ê¹þ¤ó¤À¤ó¤À¤Ã¤¿¤é¡¢¤¹¤Ù¤Æ¤Î¥í¥°½ÐÎÏÀè¤Ë¡ÊLogLevel¤ÎÀßÄê¤Ë±þ¤¸¤Æ¡Ë¥í¥°¤ò½ÐÎϤ¹¤ëµ¡Ç½¤â¤Ä¤±¤ÆÍߤ·¤¤¤è¤Ê¡¼¡£PEAR Log¤ÎComposite Logger¤ß¤¿¤¤¤Ê¤ä¤Ä¡£¤Þ¤¢Zend_Log_Adapter_Composite¤È¤«¤òºî¤Ã¤Æ¡¢¤½¤ì¤ò¥Ç¥Õ¥©¥ë¥È¥í¥¬¡¼¤Ë¤¹¤ì¤Ð¡¢¸½ºß¤Î»ÅÍͤǤâ¤ä¤ê¤¿¤¤¤³¤È¤Ï¤Ç¤¤ë¤ó¤À¤±¤É¡£
¤Ã¤Ä¡¼¤«¡¢Zend_Log::log¤Ï$logName¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¤¹¤Ù¤Æ¤Î½ÐÎÏÀè¤Ë¡ÊLogLevel¤Ë±þ¤¸¤Æ¡Ë¥í¥°¤ò½ÐÎϤ¹¤ë¡¢¤È¤¤¤¦»ÅÍͤÎÊý¤¬¤¤¤¤¤ó¤¸¤ã¤Ê¤¤¤À¤í¤¦¤«¡£¤½¤ì¤¬¥À¥á¤Ê¤é¡¢Zend_Log::logAll¤È¤«Ê̤˥᥽¥Ã¥É¤òÄɲ乤뤫¡¢¤«¤Ê¡£
¤Á¤Ê¤ß¤ËÁ°¼Ô¤ÎÊýË¡¤ò¼Â¸½¤¹¤ë¾ì¹ç¤Ï¡¢Zend/Log.php 353¹ÔÌܤ¢¤¿¤ê¤Ë¡¢¼¡¤Î¤è¤¦¤Ê¥Ñ¥Ã¥Á¤òÅö¤Æ¤ì¤Ð¤¤¤¤¡£
if (is_null($logName)) {
- $logName = self::$_defaultLogName;
+ $logName = array_keys(Zend_Log::$_instances);
+ if (isset($logName['ZF'])) {unset($logName['ZF']);}
¤Ò¤È¤Þ¤º¸½¾õ¤ÎÀ߷פ˹ç¤ï¤»¤Æ¡¢Zend_Log_Adapter_Composite¤òºî¤Ã¤Æ»î¤·¤Æ¤ß¤Æ¡¢¤½¤ì¤¬¤¤¤Þ¤¤¤Á¤Ê¤é¤³¤Ã¤Á¤âML¤ËÅꤲ¤Æ¤ß¤è¤¦¤«¤Ê¡¼¡£¤Ç¤â²¶¤Î±Ñ¸ìɽ¸½¤¬¤Ä¤¿¤Ê¤¤¤»¤¤¤«¡¢Èù̯¤Ë¥¹¥ë¡¼¤µ¤ì¤Æ¤¤¤ëµ¤¤â¤·¤Ê¤¤¤Ç¤â¤Ê¤¤¡£
_ Zend_Log_Adapter_Composite¤òºî¤Ã¤Æ¤ß¤¿
Zend_Log_Adapter_Composite¤òºî¤Ã¤Æ¤ß¤¿¤é¡¢¤½¤ì¤Ç½½Ê¬¤Ã¤Æ´¶¤¸¤À¤Ã¤¿¤ó¤Ç¡¢Zend_LogËÜÂΤμÂÁõ¤Ï¸½¾õ¤Î¤Þ¤Þ¤ÇÆÃ¤ËÌäÂê¤Ï¤Ê¤¤¤«¡£
<?php
/**
* @license LGPL
* @author ishinao <ishinao@ishinao.net>
*/
require_once 'Zend/Log/Adapter/Interface.php';
require_once 'Zend/Log/Adapter/Exception.php';
/**
*
*/
class Zend_Log_Adapter_Composite implements Zend_Log_Adapter_Interface
{
private $_options = array('logNames' => array());
/**
* new Zend_Log_Adapter($logName1, $logName2, ....);
*
*/
public function __construct()
{
$logNames = func_get_args();
foreach ((array)$logNames as $logName) {
$this->add($logName);
}
}
/**
*
* @params string $logName
*/
public function add($logName)
{
if (in_array($logName, array_keys($this->_options['logNames']))) {
throw new Zend_Log_Exception('logName already exists: ' . $logName);
}
if (!strlen($logName) || !is_string($logName)) {
throw new Zend_Log_Exception('invalid logName: ' . $logName);
}
$this->_options['logNames'][$logName] = true;
return true;
}
/**
*
* @params string $logName
*/
public function remove($logName)
{
if (!in_array($logName, $this->_options['logNames'])) {
throw new Zend_Log_Exception('logName not exists: ' . $logName);
}
unset($this->_options['logNames'][$logName]);
return true;
}
public function setOption($optionKey, $optionValue)
{
$this->_options[$optionKey] = $optionValue;
return true;
}
public function open()
{
return true;
}
public function close()
{
return true;
}
public function write($fields)
{
$message = $fields['message'];
unset($fields['message']);
$level = $fields['level'];
unset($fields['level']);
foreach (array_keys($this->_options['logNames']) as $logName) {
Zend_Log::log($message, $level, $fields, $logName);
}
}
}
?>
»È¤¤Êý¤Ï¡¢
Zend_Log::registerLogger(new Zend_Log_Adapter_File('/path/to/app.log'), 'file);
Zend_Log::registerLogger(new Zend_Log_Adapter_Db($db, 'logtable'), 'db');
Zend_Log::registerLogger(new Zend_Log_Adapter_Composite('file', 'db'));
¤Ê¤ó¤Æ¤·¤Æ¤ª¤¯¤È¡¢¤Õ¤Ä¤¦¤Ë¡¢
Zend_Log::log('message');
¤È¤·¤¿¤À¤±¤Ç¡¢¥Õ¥¡¥¤¥ë¥í¥°¤Ë¤âDB¥í¥°¤Ë¤âƱ¤¸¥í¥°¤¬½ÐÎϤµ¤ì¤ë¡£¤Ã¤Æ¤À¤±¤À¤È¤¢¤ó¤Þ¤ê»È¤¤Æ»¤¬¤Ê¤¤¤±¤É¡¢¤¿¤È¤¨¤Ð¡¢
Zend_Log::registerLogger(new Zend_Log_Adapter_File('/path/to/app.log'), 'app);
Zend_Log::registerLogger(new Zend_Log_Adapter_File('/path/to/error.log'), 'error');
Zend_Log::setLevel(Zend_Log::LEVEL_ERROR, 'error');
Zend_Log::registerLogger(new Zend_Log_Adapter_Composite('app', 'error'));
¤Ê¤ó¤Æ¤ä¤ë¤È¡¢/path/to/app.log¤Ë¤Ï¤¹¤Ù¤Æ¤Î¥í¥°¤¬½ÐÎϤµ¤ì¤Ä¤Ä¡¢LEVEL_ERROR¤Ê¥í¥°¤À¤±¤Ï/path/to/error.log¤Ë¤â½ÐÎϤµ¤ì¤ë¡£¤ß¤¿¤¤¤Ê´¶¤¸¤Ç¥í¥°½ÐÎϦ¤Î¥³¡¼¥É¤ÏÊѤ¨¤º¤Ë¡¢É¬Íפ˱þ¤¸¤Æ¥í¥°½ÐÎÏÀè¤òÀÚ¤êÂØ¤¨¤ë¥¤¥á¡¼¥¸¤Í¡£
2006-03-24 [ĹǯÆüµ]
_ Zend Framework¤ò¤É¤¦»È¤¦¤« ¤½¤Î10¤À¤È»×¤¦
¤µ¤Æ¡¢Zend_Db¼þ¤ê¤ò¸«¤Æ¤ß¤è¤¦¡£¡Ö³Î¤«O/R¥Þ¥Ã¥Ñ¡¼¤È¤·¤Æ¡¢Zend_Db_DataObject¤¬ºî¤é¤ì¤ë¤Èȯɽ¤µ¤ì¤Æ¤¤¤¿¤Ï¤º¤À¤±¤É¡¢0.1.2¤Ë¤Ï¤½¤ó¤Ê¤ÎÆþ¤Ã¤Æ¤Ê¤¤¤Ê¡¼¡£¤Þ¤À¤Ç¤¤Æ¤Ê¤¤¤Î¤«¤Ê¡¼¡×¤È»×¤¤¤Ä¤Ä¥Þ¥Ë¥å¥¢¥ë¤òÆÉ¤ó¤À¤é¡¢Zend_Db_Table¡¢Zend_Db_Table_Row¡¢Zend_Db_Table_Rowset¤¢¤¿¤ê¤¬O/R¥Þ¥Ã¥Ñ¡¼¤Êµ¡Ç½¤ò»ý¤Ã¤Æ¤¤¤ë¤Î¤Í¡£Ì¾Á°¤¬ÊѤï¤Ã¤¿¤Î¤«¡£
¤Ç¡¢Zend_Db¤Î¥³¥¢¤Ç¤¢¤ëZend_Db_Adapter¤¬¡¢DBÁàºîÁ´È̤δðËܵ¡Ç½¤ò¤¹¤Ù¤Æ»ý¤Ã¤Æ¤¤¤ë¡¢PEAR DBÁêÅö¤Î¤â¤Î¡£PEAR DB¤ÈÈæ¤Ù¤ë¤È¥á¥½¥Ã¥É̾¤È¤«¤º¤¤¤Ö¤ó¤¤ì¤¤¤ËÀ°Íý¤µ¤ì¤Ä¤Ä¡¢ÊØÍø¤½¤¦¤ÊÎà»÷¥á¥½¥Ã¥É¤â¤¤¤í¤¤¤íÁý¤¨¤Æ¤¤¤Æ¡¢Èó¾ï¤ËÎɤµ¤½¤¦¡Ê¤Á¤Ê¤ß¤Ë²¶¤ÏMDB¤È¤«MDB2¤È¤«¤Ï»È¤Ã¤Æ¤Ê¤¤¤ó¤Ç¡¢¤½¤Ã¤Á¤È¤ÏÈæ¤Ù¤é¤ì¤Ê¤¤¡Ë¡£
¤È»×¤¤¤Ä¤Ä¤è¤¯¸«¤¿¤é¡¢Zend_Db_Adapter¤ÎÀ߷סʥ¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¡Ë¤Ã¤Æ¡¢PDO¤Îµ¡Ç½¤ò¸µ¤Ë¤·¤Æ¤¤¤ë¤Î¤Í¡£PDO¤¬»È¤¨¤ë¾ì¹ç¤ÏZend_Db_Adapter¤ÏPDO¤Î¥é¥Ã¥Ñ¡¼Åª¤Ëưºî¤·¡¢PDO°Ê³°¤ÎDB¥É¥é¥¤¥Ð¤ò»È¤¦¾ì¹ç¤Ï¡¢Zend_Db_Adapter¦¡Ê¤Î³Æ¥É¥é¥¤¥Ð¥¨¥ó¥¸¥ó¡£Zend_Db_Adapter_*¤È¤«Zend_Db_Statement_*¤È¤«¡Ë¤ÇPDOÁêÅö¤Îµ¡Ç½¤ò¼ÂÁõ¤·¤Æ¸ß´¹À¤òÊݤȤ¦¤Ã¤Æ¥¢¥×¥í¡¼¥Á¤«¡£¤È¤¤¤¦¤ï¤±¤Ç¡¢Zend_Db¼þ¤ê¤òÍý²ò¤¹¤ë¤¿¤á¤Ë¤Ï¡¢PDO¤Ë´Ø¤¹¤ë´ðÁÃÃ챤¬É¬Íפ½¤¦¡£¤Þ¤¢¤Ç¤âÌÌÅݤ¯¤µ¤¤¤«¤é¤½¤Ã¤Á¤Î¤ªÊÙ¶¯¤Ï¾Êά¡£Â¿Ê¬Zend_Db_Adapter¤Îµ¡Ç½¤ò´Ø¿ô¥Ù¡¼¥¹¤Ç¼ÂÁõ¤·¤¿¤â¤Î¤Ê¤ó¤À¤í¤¦¡£
¤È¤³¤í¤ÇZend_DB::factory¡Ê¢âPDO¡Ë¤Ã¤Æ¡¢PEAR DB¤Êº¢¤Î¤è¤¦¤ÊDSNʸ»úÎó¤Ï¼õ¤±¼è¤Ã¤Æ¤â¤é¤¨¤º¡¢ÇÛÎó·Á¼°¤ÎDB¥³¥Í¥¯¥·¥ç¥óÀßÄê¤òÅϤµ¤Ê¤¤ã¤¤¤±¤Ê¤¤¤ß¤¿¤¤¤À¤Í¡£¤¿¤È¤¨¤Ð¥Þ¥Ë¥å¥¢¥ë¤Ë¤Ï¡¢
$params = array ('host' => '127.0.0.1',
'username' => 'malory',
'password' => '******',
'dbname' => 'camelot');
$db = Zend_Db::factory('pdo_mysql', $params);
¤Ê¤ó¤ÆÎ㤬½ñ¤«¤ì¤Æ¤¤¤ë¤±¤É¡¢¤³¤ì¤Ã¤Æ¡¢
$dsn = 'pdo_mysql://malory:****@127.0.0.1/camelot'; $db = Zend_DB::factory($dsn);
¤ò¼õ¤±¤Ä¤±¤Æ¤¯¤ì¤Æ¤âÎɤµ¤½¤¦¤Êµ¤¤¬¤¹¤ë¤ó¤À¤±¤É¡¢¤Ê¤ó¤Ç¤½¤¦¤Ê¤Ã¤Æ¤Ê¤¤¤ó¤À¤í¤¦¡©¡¡½¾Íè¤ÎURI·Á¼°¤Îʸ»úÎó¤À¤Èɽ¸½¤·¤¤ì¤Ê¤¤¤è¤¦¤ÊºÙ¤«¤¤ÀßÄê¤ËÂбþ¤¹¤ë¤¿¤á¤«¤Ê¡¼¡£¤Ç¤â²áµî¡ÊPEAR¡Ë¸ß´¹À¤Ï¥¡¼¥×¤·¤Æ¤¯¤ì¤Æ¤â¤¤¤¤¤È»×¤¦¤ó¤À¤±¤É¤Ê¡¼¡£DB¥³¥Í¥¯¥·¥ç¥óÀßÄê¤Ê¤ó¤ÆÀßÄê¥Õ¥¡¥¤¥ë¤Ë°ì¹Ô¤Ç½ñ¤¤¤Æ¤ª¤¤¤ÆDB¥é¥¤¥Ö¥é¥ê¤Ë¤½¤ì¤òÅϤ¹¤À¤±¡¢¤Ã¤Æ´¶¤¸¤Ë¤·¤¿¤¤¤Î¤Ë¡£
¤½¤¦¤¤¤¨¤ÐZend_Db_Adapter¡Ê¢âPDO¡Ë¤Ç¤Ï¡¢¥¨¥¹¥±¡¼¥×´ØÏ¢¤Îµ¡Ç½¤¬½¼¼Â¤·¤Æ¤¤¤Æ¡¢Ã±½ã¥¨¥¹¥±¡¼¥×¥á¥½¥Ã¥É¤À¤±¤Ç¤Ê¤¯¡¢
$where = $db->quoteInto('foo = ? and bar = ?', 1, 'BAR'); // foo = 1 and bar = 'BAR'
¤ß¤¿¤¤¤Ëprepare¤â¤É¤¤Ê½ñ¤Êý¤¬¤Ç¤¤ë¡£¤¢¤È¡¢
$result = $db->query(
'select * from tbl where foo = :foo and bar = :bar',
array('foo' => 1, 'bar' => 'BAR')
); // select * from tbl where foo = 1 and bar = 'BAR'
¤ß¤¿¤¤¤Ëprepare¤ò»È¤¦¤³¤È¤â¤Ç¤¤ëÌÏÍÍ¡£¤³¤ÎÊդεˡ¤¬½¼¼Â¤·¤Æ¤¤¤ë¤È¡¢SQLʸ¤ò½ñ¤¯¤È¤¤Ë¤¤¤í¤¤¤í¤¤ì¤¤¤Ë½ñ¤±¤ë¤è¤¦¤Ë¤Ê¤Ã¤ÆÊØÍø¡£O/R¥Þ¥Ã¥Ñ¡¼¤ò»È¤Ã¤¿¤È¤³¤í¤Ç¡¢¤¤¤¶¤È¤Ê¤Ã¤¿¤éSQLʸ¡Êwhere¤À¤±¤È¤«¤Ç¤â¡Ë¤Ï½ñ¤«¤Ê¤¤ã¤¤¤±¤Ê¤¯¤Ê¤ë¤ï¤±¤À¤·¡¢¤½¤¦¤¤¤¦»þ¤ÎÍøÊØÀ¤ò¹Í¤¨¤Æ¤¤¤í¤¤¤íÍѰդ·¤Æ¤¤¤ë¤Ã¤Ý¤¤¡£
¤Ã¤Æ½ñ¤¤¤Æ¤¤¤ë¤¦¤Á¤Ë¤º¤¤¤Ö¤óŤ¯¤Ê¤Ã¤Æ¤¤¿¤«¤é¤¤¤Ã¤¿¤óµÙ·Æ¡£
_ Zend Framework¤ò¤É¤¦»È¤¦¤« ¤½¤Î11
Zend_Db¤Î³¤¡£
Zend_Db_Adapter¤Ï¡¢¥¨¥¹¥±¡¼¥×¤¬½ñ¤¤ä¤¹¤¯¤Ê¤Ã¤¿¤È¤³¤í¤¬PEAR DB¤ÈÈæ¤Ù¤Æ¤Î°ìÈÖÂ礤ʰ㤤¤«¤Ê¡¼¡£¥á¥½¥Ã¥É̾¤¬¤ï¤«¤ê¤ä¤¹¤¯¤Ê¤Ã¤Æ¡¢PEAR DB¤Ç¤Ï
$db->autoCommit(false);
¤À¤Ã¤¿¤Î¤¬¡¢
$db->beginTransaction();
¤È¤Õ¤Ä¤¦¤Ë½ñ¤±¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¿¤ê¤¹¤ë¤Î¤â¡¢²ÄÆÉÀ¤¬¾å¤¬¤Ã¤Æ¤¤¤¤¤È»×¤¦¤±¤É¡£
¤Á¤Ê¤ß¤Ëquery¥á¥½¥Ã¥É¤ÇľÀÜSQLʸ¤òÅϤ¹ÊýË¡°Ê³°¤Ë¡¢insert¤äupdate¥á¥½¥Ã¥É¤Ç¤Ï¡¢
$table = 'tbl';
$row = array('foo' => 1, 'bar' => 'BAR');
$db->insert($table, $row); // insert into tbl(foo, bar) values(1, 'BAR');
¤ß¤¿¤¤¤Ê½ñ¤Êý¤¬¤Ç¤¤ë¤ß¤¿¤¤¤À¤±¤É¡¢¤³¤Î½ñ¤Êý¤Ï¤¦¤ì¤·¤¤¤«¤É¤¦¤«¤Á¤ç¤Ã¤ÈÈù̯¡£PHP¥³¡¼¥É¤À¤±¤ò¸«¤¿¤é¡¢¤½¤ì¤Ê¤ê¤ÎÍøÅÀ¡Ê¥³¡¼¥É¤Î¸«¤ä¤¹¤µ¡Ë¤Ï´¶¤¸¤ë¤ó¤À¤±¤É¡¢¤³¤ÎPHP¥³¡¼¥É¤¬DB¤ËÂФ·¤Æ¤É¤¦¤¤¤¦Áàºî¤ò¤¹¤ë¤Î¤«¡¢¤¤¤Þ¤¤¤Á¤ï¤«¤ê¤Ë¤¯¤¤¡£
O/R¥Þ¥Ã¥Ñ¡¼¤¯¤é¤¤ÆÍ¤È´¤±¤Á¤ã¤¨¤Ð¡¢¤½¤ÎÍøÅÀ¤ÎÂ礤µ¤Ïǧ¤á¤ë¤±¤É¡¢¤³¤¦¤¤¤¦ÃæÅÓȾü¤Ê·Á¤ÇSQLʸ¤Î±£Êäò¹Ô¤¦¤¯¤é¤¤¤Ê¤é¤Ð¡¢¤Õ¤Ä¤¦¤Ëplaceholder¤È¤«¤ò»È¤Ã¤¿SQLʸ¤Ø¤Î¥Ñ¥é¥á¡¼¥¿Ëä¤á¹þ¤ß¤ò½ñ¤¤¤¿Êý¤¬¡¢¥È¡¼¥¿¥ë¤Ç¤Î²ÄÆÉÀ¤Ï¹â¤¤¤ó¤¸¤ã¤Ê¤«¤í¤¦¤«¡£
¤Ã¤Ä¡¼¤«¤Þ¤¢¡¢¤É¤¦¤»Zend_Db¤Ë¤Ïɸ½à¤ÇO/R¥Þ¥Ã¥Ñ¡¼¤â¤¢¤ë¤«¤é¡¢¤³¤ÎÃæÅÓȾü¤ÊµË¡¤Ï¡¢ËÜÍè¤ÏO/R¥Þ¥Ã¥Ñ¡¼µ¡Ç½¤ÎÃæ¤Î¿Í¡Ê¥á¥½¥Ã¥É¡Ë¤¬»È¤¦¤¿¤á¤ËÍѰդµ¤ì¤Æ¤¤¤ë¤ó¤À¤í¤¦¤±¤É¤Í¡£
¤Á¤Ê¤ß¤ËZend_Db_Adapter¼þ¤ê¤Îµ¡Ç½¤Ï¡¢Zend_Db_Adapter¡ÜZend_Db_Statement¡ÊPDO¤òÍøÍѤ¹¤ë¾ì¹ç¤Ï¡¢PDOStatement¤¬¤½¤Î¤Þ¤Þ»È¤ï¤ì¤ë¡Ë¤ÎÁȤ߹ç¤ï¤»¤Ç¼Â¸½¤µ¤ì¤Æ¤¤¤ë¤ó¤Ç¡¢Zend_Db_Adapter¼þ¤ê¤ò°ìÄ̤êÃΤꤿ¤±¤ì¤Ð¡¢ËÜÅö¤ÏZend_Db_Statement¤ÎÊý¤âÄɤ¦É¬Íפ¬¤¢¤ë¡£PDO¤¬PDO¥¯¥é¥¹¤ÈPDOStatement¥¯¥é¥¹¤ÎÆó¤Ä¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤ë¤Î¤È¡¢Áê»÷´Ø·¸¤Ë¤¢¤ë¤ï¤±¤À¤Í¡Ê¤Ã¤Æ¤³¤È¤Ç¡¢Á°¤Ë½ñ¤¤¤¿Â¿Ê¬Zend_Db_Adapter¤Îµ¡Ç½¤ò´Ø¿ô¥Ù¡¼¥¹¤Ç¼ÂÁõ¤·¤¿¤â¤Î¤Ê¤ó¤À¤í¤¦¤Ã¤ÆÍ½Áۤϴְ㤤¤À¤Ã¤¿¡£PDO¤Ï´Ø¿ô¥Ù¡¼¥¹¤Ç¤Ï¤Ê¤¯¡¢PHP¤ÎÁȤ߹þ¤ß¥¯¥é¥¹¤È¤·¤Æ¼ÂÁõ¤µ¤ì¤Æ¤¤¤¿¡Ë¡£¤Þ¤¢¤Ç¤â¤³¤ÎÊդϿ¼Äɤ¤¤·¤Æ¤âÂ礷¤ÆÌÌÇò¤¯¤Ê¤µ¤½¤¦¤À¤«¤éÄɤï¤Ê¤¤¡£
_ ¥ª¥é¥ó¥À¸ì¡©
Zend Framework¤ÎML¤ËZend_View_Smarty¤Î·ï¤Ç¥á¡¼¥ë¤òÅꤲ¤Æ¤ß¤¿¤é¡¢¤¹¤°¤Ë¥ì¥¹¥Ý¥ó¥¹¥á¡¼¥ë¤¬Ê֤äƤ¤¿¤ó¤À¤±¤É¡¢¤Ê¤Ë¤ä¤éÆÉ¤á¤Ê¤¤¸À¸ì¤Ç½ñ¤¤¤Æ¤¢¤ë¡£.nl¥É¥á¥¤¥ó¤Ã¤Æ¥ª¥é¥ó¥À¡©¡¡¥É¥¤¥Ä¸ì¤È¤Á¤ç¤Ã¤È»÷¤Æ¤¤¤ë¤±¤É¡¢¤ä¤¿¤é¤ÈÊì²»¤òϢ³¤¹¤ëñ¸ì¤¬Â¿¤¤¤Ê¡£Ê¸Ãæ¤Ë´Þ¤Þ¤ì¤ëÆüÉդ餷¤Í×Áǡʤ³¤ì¤Ï±Ñ¸ì¤È»÷¤Æ¤¤¤ë¤«¤é¤À¤¤¤¿¤¤¤ï¤«¤ë¡Ë¤«¤é»¡¤¹¤ë¤Ë¡¢Â¿Ê¬¼«Æ°±þÅú¤ÎÉÔºßÄÌÃΥ᡼¥ë¤À¤í¤¦¡£¤Þ¤¢ML¤Ç¤ÏÎɤ¯¤¢¤ë¤³¤È¤À¤±¤É¡Êʸ»ú²½¤±¤Ç¤Ï¤Ê¤¯¡ËÆÉ¤á¤Ê¤¤¸À¸ì¤ÇÊ֤äƤ¯¤ë¤È¤Ê¤«¤Ê¤«¾Ç¤ë¡£
_ Zend Framework¤ò¤É¤¦»È¤¦¤« ¤½¤Î12
¤â¤Á¤í¤ó¤³¤ó¤Ê¤³¤È¤Ë¤Ê¤ë¤Ê¤é¡¢Ï¢È֤ǤϤʤ¯¤Á¤ã¤ó¤È¤·¤¿¥»¥¯¥·¥ç¥ó¥¿¥¤¥È¥ë¤òÉÕ¤±¤ë¤Ù¤¤À¤Ã¤¿¤È¸å²ù¤·¤Æ¤¤¤ë¤ï¤±¤Ç¤¹¤è¡£¤Þ¤¿Zend_Db¥Í¥¿¤Î³¤¤Ç¡¢º£ÅÙ¤Ïselect¥¯¥¨¥ê¡¼À¸À®¥æ¡¼¥Æ¥£¥ê¥Æ¥£¥¯¥é¥¹¤Ç¤¢¤ëZend_Db_Select¥¯¥é¥¹¤Ë¤Ä¤¤¤Æ¡£
Âè°ì°õ¾Ý¤È¤·¤Æ¤Ï¡¢Zend_Db_Select¤Ë´Ø¤·¤Æ¤â¡¢Zend_Db_Adapter::insert¤È¤«Zend_Db_Adapter::update¤È¤«¤ÈƱÍͤˡ¢Èù̯¤ËÃæÅÓȾü¤Ê´¶¤¸¤¬¤¹¤ë¡£¤Á¤Ê¤ß¤ËZend_Db_Select¥¯¥é¥¹¤Î¶ñÂÎŪ¤Ê»È¤¤Êý¤È¤·¤Æ¤Ï¡¢
// $db - Zend_Db_Adapter¥ª¥Ö¥¸¥§¥¯¥È
$select = $db->select();
$select->from('tbl', '*'); // select * from tbl
$select->where('foo = ?', 1); // where foo = 1
$select->order('bar'); // order by bar
$select->limit(10, 5); // MySQL¤Ê¤é limit 10, 5
$sql = $select->__toString(); // select * from tbl where foo = 1 order by bar limit 10,5
¤Ã¤Æ´¶¤¸¡£¤Á¤Ê¤ß¤Ë¾åµ¥µ¥ó¥×¥ë¤Ë¤Ï»È¤Ã¤Æ¤Ê¤¤¤±¤É¡¢Â¾¤Ë¤âgroup¤È¤«having¤È¤«SQLʸˡÍ×ÁǤΥѥ¿¡¼¥ó°ìÄ̤ê*1¤Î¥á¥½¥Ã¥É¤¬¤¢¤Ã¤Æ¡¢¥á¥½¥Ã¥É̾¤«¤éÁÛÁü¤·¤¿¤È¤ª¤ê¤Ëư¤¯¡£
¤Ê¤ó¤«¤â¤¦¡Ö¤¦¤ï¡¼¡×¤Ã¤Æ´¶¤¸¤¬¤·¤Ê¤¤¡©¡¡¤³¤¦¤¤¤¦¥æ¡¼¥Æ¥£¥ê¥Æ¥£¥¯¥é¥¹¤Ï¤½¤ì¤Ê¤ê¤ËÊØÍø¤À¤È¤Ïʬ¤«¤ë¡ÊÀμ«Ê¬¤Ç¤âºî¤Ã¤¿¤è¡Ë¤±¤É¡¢O/R¥Þ¥Ã¥Ñ¡¼Á´À¹¤Î»þÂå¤Ë¤³¤ì¤ò¥á¥¤¥ó¤Ë»È¤¦¤Î¤Ï¤Á¤ç¤Ã¤È¥Ó¥ß¥ç¡¼¤Êµ¤¤¬¤¹¤ë¡£
¤¿¤À¡¢¤³¤¦¤¤¤¦¥¯¥é¥¹¤¬ºî¤é¤ì¤¿Íýͳ¤Ï²¿¤È¤Ê¤¯ÁÛÁü¤Ç¤¤ë¡£
¤È¤¤¤¦¤Î¤Ï¡¢¸å¤Ç¿¨¤ì¤ëZend_Db_Table¤Ë¤è¤ëO/R¥Þ¥Ã¥Ñ¡¼µ¡Ç½¤Ë¤Ï¡¢PEAR DB_DataObject¤Ë¤Ï¸ºß¤·¤¿¥Ç¡¼¥¿¥ª¥Ö¥¸¥§¥¯¥ÈƱ»Î¤Îjoinµ¡Ç½¤¬¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤ë¡£DB_DataObject¤Ç¤Ï¡¢[dbname].links.ini¤Ë¥ê¥ó¥¯¾ðÊó¤òµ½Ò¤·¤Æ¤ª¤±¤Ð¡¢
$foo = new FooTable(); // DB_DataObject¤Ë¤è¤ëfoo¥Æ¡¼¥Ö¥ë¥ª¥Ö¥¸¥§¥¯¥È $bar = new BarTable(); // DB_DataObject¤Ë¤è¤ëbar¥Æ¡¼¥Ö¥ë¥ª¥Ö¥¸¥§¥¯¥È $foo->joinAdd($bar); // links.ini¤ÎÀßÄê¤Ë´ð¤Å¤¤¤ÆÆó¤Ä¤Î¥Æ¡¼¥Ö¥ë¤òjoin¤¹¤ë $foo->find(); // selectʸ¤òȯ¹Ô
¤Ê¤ó¤Æ´¶¤¸¤Ç¡¢join¤ò»È¤Ã¤¿selectʸ¤ò¥Ç¡¼¥¿¥ª¥Ö¥¸¥§¥¯¥ÈÁàºî¤Î¥ì¥Ù¥ë¤Ç½ñ¤±¤¿¤±¤É¡¢Zend_Db_Table(_Row)¤«¤é¤Ï¤½¤¦¤¤¤¦µ¡Ç½¤Ï¤¹¤Ã¤Ñ¤êºï½ü¤µ¤ì¤¿¡£¼ÂºÝ¤Ë¤Ï¤â¤Á¤í¤ójoin¤ò»È¤Ã¤¿select¤Ê¤ó¤Æ»³¤Î¤è¤¦¤Ë»È¤¦¤ï¤±¤Ç¡ÖO/R¥Þ¥Ã¥Ñ¡¼¤Î¥ì¥Ù¥ë¤Ç¤Îjoinµ¡Ç½¤òºï¤Ã¤¿Âå¤ï¤ê¤Ë¡¢join¤òȼ¤¦Ê£»¨¤Êselect¤Î´ÉÍý¤Ï¤³¤Ã¤Á¤Ç¤ä¤Ã¤Æ¤Í¡×¤È¤¤¤¦¤ó¤Çºî¤é¤ì¤¿¤Î¤¬¡¢Zend_Db_Select¤Ê¤ó¤¸¤ã¤Ê¤«¤í¤¦¤«¡£
¤Þ¤¢³Î¤«¤Ë¡¢DB_DataObject¤Îjoinµ¡Ç½¤Ï·ë¹½Èù̯¤Ê¤Ç¤¤Ç¤Ï¤¢¤Ã¤¿¤·*2¡¢¤½¤Î´°À®ÅÙ¤ò¹â¤á¤ë¤Ã¤Æ¤Î¤Ï¤«¤Ê¤êÆñ¤·¤¤*3¤³¤È¤Ïʬ¤«¤ë¤±¤É¡¢¤³¤¦¤Ê¤Ã¤Á¤ã¤¦¤È»È¤¤¾¡¼ê¤È¤·¤Æ¤ÏDB_DataObject¤«¤é¸åÂष¤Æ¤¤¤ëµ¤¤¬¤¹¤ë¤ó¤À¤è¤Ê¡¼¡£Ã±ÂΤǤϤ¤ì¤¤¤Ê»ÅÍÍ¡õ¼ÂÁõ¤Ç¤Ï¤¢¤ë¤È»×¤¦¤±¤É¡£
¤Á¤Ê¤ß¤ËZend_Db_Select¤ò»È¤Ã¤¿join¤Î¤ä¤êÊý¤Ï¡¢¤³¤ó¤Ê´¶¤¸¤Ë¤Ê¤ë¡£
$select = $db->select();
$select->from('foo', '*'); // select foo.* from foo
$select->join('bar', 'foo.id = bar.id', '*'); // select bar.* ... join bar on foo.id = bar.id
$sql = $select->__toString(); // select foo.*, bar.* from foo join bar on foo.id = bar.id
¤¦¡¼¤ó¡¢²¶¤Ê¤éÁÇľ¤ËSQLʸ¡Üplaceholder¤Ç½ñ¤¤¤Á¤ã¤¦µ¤¤¬¤¹¤ë¤Ê¡¼¡£Zend_Db_Select¤ò»È¤Ã¤Æ¤â¡¢·ë¶ÉO/R¥Þ¥Ã¥Ñ¡¼¤Ç¤¢¤ëZend_Db_Table¤È¤Ï°Û¤Ê¤ë¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ¹¤ëÁàºî¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¤·¡¢¤À¤Ã¤¿¤éO/R¥Þ¥Ã¥Ñ¡¼¤È¤Ï°Û¤Ê¤ë·Á¤ÇSQLʸ¤ò±£Ê乤ëZend_Db_Select¤ò»È¤¦¤è¤ê¤Ï¡¢¤Þ¤ÀSQLʸ¤òľÀܽñ¤¤¤¿Êý¤¬¤ï¤«¤ê¤ä¤¹¤¤µ¤¤¬¤¹¤ë¡£Zend_Db_Select¤ò»È¤¦¾ì¹ç¤Ï¡¢À¸À®¤µ¤ì¤ëSQLʸ¤ò´°Á´¤ËƬ¤ÎÃæ¤Ë¥¤¥á¡¼¥¸¤·¤Æ¤¤¤Ê¤¤¤È»È¤¨¤Ê¤¤¤ï¤±¤À¤·¡£
¤¢¡¢°ìÅÀZend_Db_Select¤ò»È¤¦³Î¼Â¤ÊÍøÅÀ¤¬¤¢¤Ã¤¿¤Ê¡£limit´Ø·¸¤ÎSQL¤ÏDBMS¤Ë¤è¤Ã¤Æ¤¤¤í¤¤¤í°Û¤Ê¤ë¤ó¤À¤±¤É¡¢¤½¤ì¤òZend_Db_Select¤ò»È¤¦¤³¤È¤ÇµÛ¼ý¤·¤Æ¤¯¤ì¤ëÌÏÍÍ¡£¤½¤ì¤¬½ÅÍפʤé¤Ð»È¤¦²ÁÃͤ¬¤¢¤ë¤«¤â¤Í¡£
_ Zend Framework¤ò¤É¤¦»È¤¦¤« ¤½¤Î13
¡Ö¤è¤¦¤ä¤¯O/R¥Þ¥Ã¥Ñ¡¼¤Ë¤¿¤É¤êÃ夤ޤ·¤¿¤è¡×¤ÎZend_Db_Table¡£»È¤¤Êý¤Ï¡¢
// $db - Zend_Db_Adapter¥ª¥Ö¥¸¥§¥¯¥È
Zend_Db_Table::setDefaultAdapter($db);
class Foo extends Zend_Db_Table {} // foo¥Æ¡¼¥Ö¥ë¤ËÂбþ¤¹¤ë¥¯¥é¥¹¤ÎÀë¸À
$foo = new Foo(); // $foo¥Æ¡¼¥Ö¥ë¤ËÂбþ¤·¤¿¥ª¥Ö¥¸¥§¥¯¥È
¤Ã¤Æ´¶¤¸¡£¼Â¹Ô´Ä¶¡Êstatic protected Zend_Db_Table::$_defaultDb¡Ë¤ËDBÀܳ¾ðÊó¤ò¥»¥Ã¥È¤·¤Æ¤ª¤¯¤Ã¤Æ¤ä¤êÊý¤Ï¡¢DB_DataObject¤¬PEAR¤ÎstaticProperty¤ò»È¤Ã¤Æ¤¤¤¿¤ä¤êÊý¤È°ì½ï¤À¤Í¡£
¤¿¤À¤·¡¢¾åµ¤Î¤è¤¦¤Ë¥ª¥×¥·¥ç¥óÀßÄê¤Ê¤·¤Ç¥Æ¡¼¥Ö¥ë¥¯¥é¥¹¤òÀë¸À¤·¤¿¾ì¹ç¤Ï¡¢
- ¥¯¥é¥¹Ì¾ = ¥Æ¡¼¥Ö¥ë̾
- ¥Æ¡¼¥Ö¥ë¤Î¥×¥é¥¤¥Þ¥ê¡¼¥¡¼¤È¤Ê¤ë¥«¥é¥à̾ = id
¤È¤Ê¤Ã¤Æ¤¤¤ëɬÍסʵ¬Ìó¡Ë¤¬¤¢¤ë¡£¤½¤ÎÊÕ¤òÊѹ¹¤·¤¿¤¤¾ì¹ç¤Ï¡¢
class Table_Foo extends Zend_Db_Table
{
protected $_name = 'foo'; // ¥Æ¡¼¥Ö¥ë̾
protected $_primary = 'id'; // ¥×¥é¥¤¥Þ¥ê¡¼¥¡¼¤È¤Ê¤ë¥«¥é¥à̾
}
¤Ê¤ó¤Æ´¶¤¸¤Ç¥¯¥é¥¹¤òÄêµÁ¤¹¤ì¤Ð¤¤¤¤*4¡£¼ÂºÝ¤Ë»È¤¦¤È¤¤Ë¤Ï¤É¤¦½ñ¤¯¤ó¤À¤í¤¦¤Ê¡¼¡£Å¬Åö¤Êprefix¤ò¤Ä¤±¤Æ¥¯¥é¥¹ÄêµÁ¥Õ¥¡¥¤¥ë¤ò¼«Æ°À¸À®¤·¤Ä¤Ä¡¢É¬Íפ˱þ¤¸¤ÆÆâÍÆ¤ò½¤Àµ¤¹¤ë´¶¤¸¤Ë¤Ê¤ë¤Î¤«¤Ê¡¼¡£¤Þ¤À¶ñÂÎŪ¤ÊÍøÍÑ¥¤¥á¡¼¥¸¤Ïͯ¤«¤Ê¤¤¡£
Zend_Db_Table¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ¤Ç¤¤ëÁàºî¤Ï¡¢
- getAdapter() - Zend_Db_Adapter¥ª¥Ö¥¸¥§¥¯¥È¤¬¼èÆÀ¤Ç¤¤ë¤ó¤Ç¡¢ºÙ¤«¤¤Áàºî¤¬É¬Íפʾì¹ç¤Ï¤³¤ì·Ðͳ¤Ç½èÍý¡£
- info() - ¥Æ¡¼¥Ö¥ë¾ðÊ󤬼èÆÀ¤Ç¤¤ë¡£¥Æ¡¼¥Ö¥ë̾¡¢¥«¥é¥à̾°ìÍ÷¡¢¥×¥é¥¤¥Þ¥ê¡¼¥¡¼¥«¥é¥à̾¤Î»°¤Ä¤òÏ¢ÁÛÇÛÎó¤Ç¡£
- insert(array $data) - Ï¢ÁÛÇÛÎó¤Ç¥Ç¡¼¥¿¤òÅϤ·¤Æinsert¤ò¼Â¹Ô¡£¤ä¤Ã¤Ñ¤êÆâÉôŪ¤Ë¤ÏZend_Db_Adapter::insert¤¬¸Æ¤Ð¤ì¤Æ¤¤¤ë¤Í¡£
- update(array $data, string $where) - Ï¢ÁÛÇÛÎó¤Ç¥Ç¡¼¥¿¤ò¡¢SQLʸ¤Çwhere¾ò·ï¤òÅϤ·¤Æupdate¤ò¼Â¹Ô¡£¤³¤Ã¤Á¤âÆâÉôŪ¤Ë¤ÏZend_Db_Adapter::update¤¬¸Æ¤Ð¤ì¤Æ¤¤¤ë¡£
- delete(string $where) - SQLʸ¤Çwhere¾ò·ï¤òÅϤ·¤Ædelete¤ò¼Â¹Ô¡£
- find(mixed $val) - primary key¤ËÂФ¹¤ë¸¡º÷¡£$val¤Ëscalar¤òÅϤ¹¤È1¹Ô¸¡º÷¡ÊÌá¤êÃͤÏZend_Db_Table_Row¡Ë¡¢ÇÛÎó¤òÅϤ¹¤Èin¸¡º÷¡ÊÌá¤êÃͤÏZend_Db_Table_Rowset¡Ë¤µ¤ì¤ë¡£
- fetchAll($where, $order, $count, $offset) - ¤Õ¤Ä¤¦¤Ëselectȯ¸ú¡£°ú¿ô¤Ï¤¹¤Ù¤Æ¾Êά²Äǽ¡£Ìá¤êÃͤÏZend_Db_Table_Rowset¡£
- fetchRow($where, $order) - 1¹Ôselect¡£Ê£¿ô¹Ô¤¬ÁªÂò¤µ¤ì¤ë¤è¤¦¤Ê$where¤Î¾ì¹ç¤ÏºÇ½é¤Î1¹Ô¡£¤¿¤À¤·¡¢Zend_Db_Table_Row¤Ë¤Ïnext¤ß¤¿¤¤¤Ê¥á¥½¥Ã¥É¤Ï¤Ê¤¤¤«¤é¡¢2¹ÔÌÜ°Ê¹ß¤Ë°ÜÆ°¤¹¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¡£
- fetchNew() - ¶õ¤ÎZend_Db_Table_Row¤òÊÖ¤¹¡£Zend_Db_Table::insert¤Ç¤Ï¤Ê¤¯¡¢Zend_Db_Table_Row::save¤ò»È¤Ã¤Æinsert¤·¤¿¤¤¤È¤¤Ë»È¤¦¤ó¤À¤í¤¦¡£
¤Ê¤ó¤Æ´¶¤¸¡£¥¯¥é¥¹¹½À®¤È¤·¤Æ¤Ï¡¢Zend_Db_Table¤Ï¥Æ¡¼¥Ö¥ëÁ´ÂΤËÂФ¹¤ëÁàºî¤ò¹Ô¤¤¡¢¥ì¥³¡¼¥Éñ°Ì¤ÎÁàºî¤Ï¡¢Zend_Db_Table¤Îfetch·Ï¥á¥½¥Ã¥É¤ÇÊÖ¤µ¤ì¤ë¡¢Zend_Db_Table_Row(set)¤Ç¹Ô¤¦¤È¤¤¤¦¥¤¥á¡¼¥¸¤Í¡£
Zend_Db_Table_Row(set)¤ÎÏäϸå²ó¤·¤Ë¤·¤Æ¡¢Zend_Db_Table¤Î³ÈÄ¥¤ÎÏäò¤â¤¦¤Á¤ç¤Ã¤È³¤±¤ë¡£
ºÇ½é¤ÎÊý¤Ç¡¢¥Æ¡¼¥Ö¥ë̾¤ä¥×¥é¥¤¥Þ¥ê¡¼¥¡¼¤ÎÀßÄê¤òÊѹ¹¤¹¤ë¤¿¤á¤Î¥¯¥é¥¹ÄêµÁ¤ÎÏäò½ñ¤¤¤¿¤±¤É¡¢¤½¤ì°Ê³°¤Ë¤â¥¯¥é¥¹¤ò³ÈÄ¥¤¹¤ëÊýË¡¤Ï¤¢¤ë¡£¤Ä¤Ã¤Æ¤â¡¢Ã±¤Ë¤Õ¤Ä¤¦¤Î¥¯¥é¥¹¤Î³ÈÄ¥¤Î»ÅÊý¤È°ì½ï¤Ç¡¢Zend_Db_Table¤ò·Ñ¾µ¤·¤¿¥¯¥é¥¹¤Ç¡¢¥á¥½¥Ã¥É¤ò¾å½ñ¤¡Êoverride¡Ë¤¹¤ë¤Ê¤êÄɲ乤ë¤Ê¤ê¤¹¤ì¤Ð¡¢µ¡Ç½³ÈÄ¥¤Ç¤¤Þ¤¹¤è¡¢¤È¤¤¤¦Ïá£
¤¿¤È¤¨¤Ð¡¢
class Foo extends Zend_Db_Table
{
function insert($data)
{
if (empty($data['created']) {$data['created'] = time();}
parent::insert($data);
}
}
¤Ê¤ó¤Æ´¶¤¸¤Ç¡¢insert»þ¤ËÀ¸À®»þ´Ö¤ò¼«Æ°Åª¤Ë¹¹¿·¤·¤¿¤ê¡¢
class Foo extends Zend_Db_Table
{
function findByName($name)
{
$db = $this->getAdapter();
$where = $db->quoteInto('name = ?', $name);
return $this->fetchAll($where);
}
}
¤Ê¤ó¤Æ´¶¤¸¤ÇÆÈ¼«¤Î¸¡º÷¥á¥½¥Ã¥É¤òÄɲä·¤¿¤ê¤Ã¤Æ´¶¤¸¤«¡£¤Ç¤â¤³¤ÎÎã¤Ê¤ó¤Æ¡¢DB_DataObject¤À¤Ã¤¿¤éɸ½à¥¯¥é¥¹¤ò»È¤Ã¤Æ¡¢
$foo = new FooTable(); // DB_DataObject¤Ë¤è¤ëfoo¥Æ¡¼¥Ö¥ë¥ª¥Ö¥¸¥§¥¯¥È $foo->name = $name; $foo->find();
¤ÇºÑ¤ó¤À¤ó¤À¤±¤É¤Í¡£
_ Zend Framework¤ò¤É¤¦»È¤¦¤« ¤½¤Î14
O/R¥Þ¥Ã¥Ñ¡¼ÊÔ¤½¤Î2¡£Zend_Db_Table¤Îfetch·Ï¥á¥½¥Ã¥É¤ÇÊÖ¤µ¤ì¤ëZend_Db_Table_Row¤ª¤è¤ÓZend_Db_Table_Rowset¤Ë¤Ä¤¤¤Æ¡£Ì¾Á°¤ò¸«¤ì¤Ðʬ¤«¤ë¤È¤ª¤ê¡¢Zend_Db_Table_Row¤¬1¹Ô¥ì¥³¡¼¥É¤ËÁêÅö¤¹¤ë¥¯¥é¥¹¤Ç¡¢Zend_Db_Table_Rowset¤¬Ê£¿ô¹Ô¤Î¥ì¥³¡¼¥É¤ò´ÉÍý¤¹¤ë¥¯¥é¥¹¤Í¡£
Zend_Db_Table_Rowset¤Ï¡¢Ã±¤ËÆâÉô¤ËZend_Db_Table_Row¥ª¥Ö¥¸¥§¥¯¥È¤ÎÇÛÎó¤òÊú¤¨¤Æ¤¤¤ë¤À¤±¤Ç¡¢DBMS¥ì¥Ù¥ë¤Ç¤Î¥«¡¼¥½¥ë¤È¤«¤Ï»È¤Ã¤Æ¤¤¤Ê¤¤¡£¡Ö100Ëü¹ÔÊÖ¤¹Zend_Db_Table::fetchAll¤òÅꤲ¤¿¤é¡¢100Ëü¸Ä¤ÎZend_Db_Table_Row¥ª¥Ö¥¸¥§¥¯¥È¤òºî¤Ã¤¿¤ë¤Ç¤§¡×¤È¤¤¤¦µ¤¹ç¤¤¤ÎÆþ¤Ã¤¿»ÅÍͤˤʤäƤ¤¤ë¡£
Zend_Db_Table_Rowset¤Î¥á¥½¥Ã¥É¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ê´¶¤¸¡£
- current() - ¥«¥ì¥ó¥È¤ÎZend_Db_Table_Row¥ª¥Ö¥¸¥§¥¯¥È¤òÊÖ¤¹¡£Â¸ºß¤·¤Ê¤¤¾ì¹ç¤Ïfalse¤¬Ê֤롣
- next() - ¥Ý¥¤¥ó¥¿¤ò¼¡¤Î¹Ô¤Ë°Üư¤·¡¢¿·¤·¤¤¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£
- rewind() - ¥Ý¥¤¥ó¥¿¤òÀèÆ¬¤Ë°Üư¡£
- valid() - ͸ú¤Ê¥Ý¥¤¥ó¥¿¤òº¹¤·¤Æ¤¤¤ë¤«¡£
- count() - ¥ì¥³¡¼¥É¹Ô¿ô¡£
- exists() - ͸ú¤Ê¥ì¥³¡¼¥É¤ò»ý¤Ä¤«¡Ê¶õ¤ÎZend_Db_Table_Rowset¤«¤É¤¦¤«¡Ë
- toArray() - ÊÝ»ý¤·¤Æ¤¤¤ëÁ´¹Ô¤Î¥Ç¡¼¥¿¤ò¡¢ÇÛÎó¡ÜÏ¢ÁÛÇÛÎó·Á¼°¡ÊµìÀ¤Âå¤ÎPHP¤é¤·¤¤¥Ç¡¼¥¿·Á¼°¡Ë¤ËÊÑ´¹¤·¤ÆÊÖ¤¹¡£
¤¿¤À¤·¡¢¤Û¤È¤ó¤Éiterator¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤¹¤ë¤¿¤á¤Î¥á¥½¥Ã¥É¤Í¡£¤Õ¤Ä¤¦¤Î¥¯¥é¥¹¥é¥¤¥Ö¥é¥êŪ¤Ë½ñ¤±¤Ð¡¢
$foo = new Foo(); // Zend_Db_Table¥ª¥Ö¥¸¥§¥¯¥È
$rows = $foo->fetchAll(); // Á´¹Ô¼èÆÀ
while ($rows->valid()) {
$row = $rows->current();
// ³Æ¹Ô¤ËÂФ¹¤ë½èÍý
$rows->next();
}
¤Ê¤ó¤Æ´¶¤¸¤Ë¤Ê¤ë¤±¤É¡¢iterator¤ò»È¤¨¤Ð¡¢
$foo = new Foo(); // Zend_Db_Table¥ª¥Ö¥¸¥§¥¯¥È
$rows = $foo->fetchAll(); // Á´¹Ô¼èÆÀ
foreach ($rows as $row) {
// ³Æ¹Ô¤ËÂФ¹¤ë½èÍý
}
¤Ê¤ó¤Æ½ñ¤Êý¤Ë¤Ê¤ë¡£PHP¤À¤Ã¤¿¤é¤³¤Ã¤Á¤Î½ñ¤Êý¤ÎÊý¤¬¤Õ¤Ä¤¦¤«¤Ê¡£
¤½¤¦¤ä¤Ã¤Æ¼èÆÀ¤·¤¿1¥ì¥³¡¼¥Éñ°Ì¤ÎZend_Db_Table_Row¤Î¥á¥½¥Ã¥É¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ê´¶¤¸¡£
- save() - primary key¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ì¤Ðupdate¡¢¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ðinsert¤ò¹Ô¤¦¡£
- toArray() - ¥Ç¡¼¥¿¤òÏ¢ÁÛÇÛÎó¤È¤·¤ÆÊÖ¤¹¡£
- setFromArray(array $data) - Ï¢ÁÛÇÛÎ󤫤鳯¥«¥é¥à¤ÎÃͤò¥»¥Ã¥È¤¹¤ë
¤Ê¤ó¤Æ´¶¤¸¡£¤â¤Á¤í¤ó³Æ¥«¥é¥à¤ÎÂåÆþ¤È»²¾È¤Ï¡¢¾åµ¥á¥½¥Ã¥É°Ê³°¤Ë¤â¡¢
$row->foo = 1; $row->bar = 'BAR'; $row->save();
¤Ê¤ó¤Æ´¶¤¸¤Ç¡¢__set¡¢__get¥á¥½¥Ã¥É¤ò·Ðͳ¤·¤¿¥×¥í¥Ñ¥Æ¥£É½¸½¤Ç¤â½ñ¤¯¤³¤È¤¬¤Ç¤¤ë¡£
°Ê¾å¤ÇZend Framework¤ÎO/R¥Þ¥Ã¥Ñ¡¼¼þ¤ê¤Îµ¡Ç½¤Ï°ìÄ̤긫¤Æ¤¤¤Ã¤¿¤ï¤±¤À¤±¤É¡¢¤¤ì¤¤¤Ê»ÅÍͤǤϤ¢¤ë¤±¤ì¤É¤â¡¢¤«¤Ê¤êµ¡Ç½¤Ï¾¯¤Ê¤¤¤Ê¡¼¤È¤¤¤¦¤Î¤¬¡¢Á´ÂΤòÄ̤·¤Æ¤Î°õ¾Ý¡£
ÆÃ¤ËO/R¥Þ¥Ã¥Ñ¡¼¤Ï1¥Æ¡¼¥Ö¥ëñ°Ì¤ÎÁàºî¤Ç¤·¤«¡Ê¸¡º÷¤Ç¤µ¤¨¤â¡Ë»È¤¨¤Ê¤¤¤Ã¤Æ»ÅÍͤϡ¢·ë¹½Èù̯¤Êµ¤¤¬¤¹¤ë¡£¤È¤¤¤¦¤Î¤ÏDB_DataObject¤Î¡¢¸¡º÷¤À¤±¤Ê¤éÊ£¿ô¥Æ¡¼¥Ö¥ë¤ò¤Þ¤¿¤¤¤À½èÍý¤Ë¤â¥Ç¡¼¥¿¥ª¥Ö¥¸¥§¥¯¥È¸ß´¹¤ÎÁàºî¤¬»È¤¨¤ë¡¢¤È¤¤¤¦»ÅÍͤ˲¶¤¬´·¤ì¤Æ¤·¤Þ¤Ã¤Æ¤¤¤ë¤«¤é¤«¤â¤·¤ì¤Ê¤¤¤±¤É¡£¶ñÂÎŪ¤Ë¤Ï¡¢
$stock = new StockTable(); // ºß¸Ë¥Æ¡¼¥Ö¥ë
$product = new ProductTable(); // ¾¦Éʥơ¼¥Ö¥ë
$product->kind = 'book'; //¼ïÎà¤Ï¡ÖËÜ¡×
$stock->joinAdd($product); // ºß¸Ë¥Æ¡¼¥Ö¥ë¤È¾¦Éʥơ¼¥Ö¥ë¤òjoin
$stock->find();
while ($stock->fetch()) {
if ($stock->amount == 0) {
// ºß¸Ë¤¬¤Ê¤¤Ëܤξì¹ç¤Î½èÍý
}
}
¤ß¤¿¤¤¤Ê½ñ¤Êý¤¬DB_DataObject¤Ç¤Ï´Êñ¤Ë¤Ç¤¤¿¤ï¤±¤À¤±¤É¡¢¤³¤ì¤òZend_Db¤ò»È¤Ã¤Æ½ñ¤¯¤È
$select = $db->select();
$select->from('stock', '*');
$select->join('product', 'stock.product = product.id', '*');
$select->where('product.kind = ?', 'book');
$sql = $select->__toString();
$rows = $db->fetchAll($sql);
foreach ($rows as $row) {
if ($row['amount'] == 0) {
// ºß¸Ë¤¬¤Ê¤¤Ëܤξì¹ç¤Î½èÍý
}
}
¤ß¤¿¤¤¤ËZend_Db_Adapter¡ÜÇÛÎó¤Ë¤è¤ë·ë²Ì¥»¥Ã¥È¤ò»È¤Ã¤Æ½ñ¤¯¤«¡¢¤¢¤ë¤¤¤Ï¡¢
$select = $db->select();
$select->from('product', 'id');
$select->where('kind = ?', 'book');
$sql = $select->__toString();
$rows = $db->fetchAll($sql);
$ids = array();
foreach ($rows as $row) {$ids[] = $row['id'];}
class Stock extends Zend_Db_Table {};
$stock = new Stock();
$rows = $stock->fetchAll($db->quoteInto('product in (?)', $ids));
foreach ($rows as $row) {
if ($row->amount == 0) {
// ºß¸Ë¤¬¤Ê¤¤Ëܤξì¹ç¤Î½èÍý
}
}
¤ß¤¿¤¤¤Ë²ó¤ê¤¯¤É¤¯Zend_Db_Table¤ò»È¤Ã¤Æ½ñ¤¯¤³¤È¤Ë¤Ê¤ë¤ó¤À¤è¤Í¡©¡¡¤Ê¤ó¤«DB_DataObject¤Îº¢¤è¤ê¤â¤º¤¤¤Ö¤ó¤ï¤«¤ê¤Ë¤¯¤¯¤Ê¤Ã¤Á¤ã¤Ã¤¿¤Ê¡¼¤È»×¤¨¤Æ¤·¤Þ¤¦¡£¤½¤ì¤È¤â²¶¤¬»×¤¤¤Ä¤¤¤Æ¤¤¤Ê¤¤¤À¤±¤Ç¡¢¸½¾õ¤ÎZend_Db¤ò»È¤Ã¤Æ¤â¤Ã¤È¤¤ì¤¤¤Ë½ñ¤¯ÊýË¡¤¬¤¢¤ë¤Î¤«¤Ê¡©
°ì±þÊ䤷¤Æ¤ª¤¯¤È¡¢
Zend_Db_Adapter¤ò»È¤Ã¤Æ¡¢Ï¢ÁÛÇÛÎó¤Ç·ë²Ì¤ò¼õ¤±¼è¤Ã¤¿¾ì¹ç¡¢¤¿¤È¤¨¤Ðamount¤È¤¤¤¦¥«¥é¥à̾¤ò´Ö°ã¤Ã¤Æ¡¢
if ($row['amaunt'] == 0) {
¤Ê¤ó¤Æ½ñ¤¤¤¿¤È¤·¤Æ¤â¡¢¡ÊE_NOTICE¤¬Í¸ú¤Ê¤é¤Ðnotice¤Ï½Ð¤ë¤±¤É¡Ë¥¨¥é¡¼¤Ï½Ð¤Ê¤¤¡£°ìÊý¡¢Zend_Db_Table_Row¤Ç·ë²Ì¤òÆÀ¤ë¾ì¹ç¤Ï¡¢
if ($row->amaunt == 0) {
¤È½ñ¤¯¤È¡¢Â¸ºß¤·¤Ê¤¤¥«¥é¥à̾¤ò»È¤Ã¤¿¤È¸À¤¦¤³¤È¤Ç¡¢Îã³°¤¬Åꤲ¤é¤ì¤ë¡£¤â¤Á¤í¤ó¸å¼Ô¤ÎÊý¤¬¥³¡¼¥Ç¥£¥ó¥°¥¹¥¿¥¤¥ë¤È¤·¤Æ¤Ï¤¤¤¤¤è¤Í¡£
_ Zend Framework¤ò¤É¤¦»È¤¦¤« ¤½¤Î15
¤â¤¦°ì¸Ä¿¨¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿Zend_Db¼þ¤ê¤Î¥¯¥é¥¹¤¬¤¢¤Ã¤¿¤ó¤Ç¡¢¤½¤ì¤Ë¤Ä¤¤¤Æ¤â°ì±þ½ñ¤¤¤Æ¤ª¤³¤¦¡£
Zend_Db_Profiler¤Ã¤Æ¥¯¥é¥¹¤¬¤½¤Ã¤È¸ºß¤·¤Æ¤¤¤Æ¡¢¤è¤¯¸«¤ë¤ÈZend_Db_Adapter¤¬¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò»ý¤Ã¤Æ¤¤¤ë¡£Ì¾Á°¤ò¸«¤ì¤Ðʬ¤«¤ë¤È¤ª¤ê¡¢DB¥¯¥¨¥ê¡¼¤Î¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°¤ò¤·¤Æ¤¯¤ì¤ë¥¯¥é¥¹¤Í¡£
¤³¤ì¤ÏZend_Db_Adapter¤òÀ¸À®¤¹¤ë¤È¤¤Ë¡¢
$config = array(
..., //DBÀܳÀßÄê¤Ï¾Êά
'profiler' => true,
);
$db = Zend_Db::factory('pdo_mysql', $config);
¤Ê¤ó¤Æ´¶¤¸¤Ç¡¢profiler = true¤ÊÀßÄê¤òÅϤ¹¤È͸ú¤Ë¤Ê¤ë¡£¤¢¤ë¤¤¤Ï¡¢À¸À®¤·¤¿Zend_Db_Adapter¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¡¢
$profiler = $db->getProfiler(); $profiler->setEnabled(true);
¤Ê¤ó¤Æ¤ä¤Ã¤Æ¤â͸ú¤Ë¤Ê¤ë¡£
¥×¥í¥Õ¥¡¥¤¥é¡¼¤¬Í¸ú¤Ê¾õÂ֤Ǽ¹Ԥµ¤ì¤ë¤¹¤Ù¤Æ¤Î¥¯¥¨¥ê¡¼¤Ï¡¢¤½¤Î¼Â¹Ô»þ´Ö¤¬¥×¥í¥Õ¥¡¥¤¥é¡¼ÆâÉô¤ÇµÏ¿¤µ¤ì¤Æ¤¤¤¯¡£
$profiles = $profier->getQueryProfiles();
foreach ($profiles as $profile) {
echo '¥¯¥¨¥ê¡¼: ' . $profile->getQuery() . "\n";
echo '¥¯¥¨¥ê¡¼¼ïÊÌ: ' . $profile->getQueryType() . "\n"; // Zend_Db_ProfilerÆâ¤ÇÄêµÁ
echo '¼Â¹Ô»þ´Ö: ' . $profile->getElapsedSecs() . "\n"; //microÉÃñ°Ì¤Þ¤Ç
}
¤Ê¤ó¤Æ´¶¤¸¤Ç¼èÆÀ¤Ç¤¤ëÌÏÍÍ¡£
ɬÍפʤȤ³¤í¤À¤±¥×¥í¥Õ¥¡¥¤¥é¡¼¤ò͸ú¤Ë¤·¤¿¤ê¤Ç¤¤ë¤«¤é¡¢¥Ù¥ó¥Á¥Þ¡¼¥¯¤ò¼è¤ê¤¿¤¤¤È¤³¤í¤À¤±¤Ç͸ú¤Ë¤·¤Æ¡¢¤½¤Î·ë²Ì¤ò¥í¥°¤È¤«¤ËÅǤ½Ð¤·¤¿¤ê¤¹¤ë¤È¡¢¤¤¤¤¤«¤â¤·¤ì¤Ê¤¤¡£MySQL¤ÎSlow Query LogÁêÅö¤Îµ¡Ç½¤ò¼«Á°¤Çºî¤Ã¤¿¤ê¤â´Êñ¤Ë¤Ç¤¤½¤¦¤À¤Í¡£
2006-03-23 [ĹǯÆüµ]
_ ¥½¥Ë¡¼Â»ÊݤÎÂè°ì°õ¾Ý¤ï¤í¤·
¥³¥ó¥Ó¥Ëʧ¤¤¤Ç¿½¤·¹þ¤ó¤À¤Î¤Ë¡¢»Ùʧ´ü¸Â¤Þ¤Ç¤Ë¿¶¤ê¹þ¤Þ¤Ê¤±¤ì¤Ð¿½¤·¹þ¤ß¤Ï̵¸ú¤Ë¤Ê¤ë¤È¤«Ãí°Õ½ñ¤¬½Ð¤Æ¤¤¤¿¤Î¤Ë¡¢»Ùʧ´ü¸Â¤ÎÍâÆü¤¬Á°¤ÎÊݸ±¤¬ÀÚ¤ì¤ëÆü¤Ê¤ó¤Ç´Ö¤Ë¹ç¤ï¤Ê¤¤¤ÈÊݸ±¤Î¶õÇò´ü´Ö¤¬¤Ç¤¤Æ¤·¤Þ¤¦¤Î¤Ë¡¢¥³¥ó¥Ó¥Ëʧ¤¤¤Î¿¶¤ê¹þ¤ßÍѻ椬»Ùʧ´ü¸Â¤ÎÍâÆü¤ËÆÏ¤¤ä¤¬¤Ã¤¿¤è¡£
»Ùʧ´ü¸Â¤ÎÁ°Æü¤Ë¤Ê¤Ã¤Æ¤â»ÙʧÍѻ椬ÆÏ¤«¤Ê¤¤¤ó¤Ç¡¢ÅÅÏ䷤ƥ¯¥ì¥¸¥Ã¥È¥«¡¼¥É¤Çʧ¤¤¹þ¤ó¤À¤«¤é´Ö¤Ë¹ç¤Ã¤¿¤±¤É¡¢¤Ê¤«¤Ê¤«½Ð¤À¤·¤«¤é¤ä¤ê¤ä¤¬¤ë¤Ê¡£µÙÆü½ËÆü¤¬Íí¤àÆüÄø¤Ç¤®¤ê¤®¤ê¤Ë¿½¤·¹þ¤ó¤À¤Ã¤Ä¡¼¾õ¶·¤â¸¶°ø¤Î°ì¤Ä¤À¤í¤¦¤±¤É¡¢Êݸ±¤È¤«¼è¤ê°·¤Ã¤Æ¤ë¤È¤³¤í¤Ê¤é¤Ð¤½¤ÎÊÕ¤Á¤ã¤ó¤È´ÉÍý¤·¤Æ¤¯¤ì¤ä¡£
_ Zend_View_Smarty¤òºî¤Ã¤Æ¤ß¤¿
Zend_View¤òSmartyÂбþ¤¹¤ë¤¿¤á¤ÎZend_View_Smarty¤òºî¤Ã¤Æ¤ß¤¿¡£
¤¿¤À¤·¡¢¡ÖZend Framework¤ò¤É¤¦»È¤¦¤« ¤½¤Î8¡×¤Ç¤°¤À¤°¤À½ñ¤¤¤¿¤È¤ª¤ê¡¢¸½ºß¡ÊZend Framework 0.1.2¡Ë¤ÎZend_View_Abstract¤Î¼ÂÁõ¤Ç¤Ï¡¢View¤ÎÃͤòÊÝ»ý¤¹¤ëÊÑ¿ô¤Ç¤¢¤ë$_vars¤Ë¡¢·Ñ¾µ¤·¤¿¥¯¥é¥¹¤«¤é¥¢¥¯¥»¥¹¤Ç¤¤Ê¤¤¡£
¤½¤³¤Ç¡¢Zend_View_Abstract¤ò°Ê²¼¤Î¤è¤¦¤Ë½ñ¤´¹¤¨¤Æ»È¤Ã¤Æ¤¤¤ë¡£
- private $_vars = array(); + protected $_vars = array();
Zend_View_Smarty¤ò»È¤¦¤È¡¢¸Æ¤Ó½Ð¤·Â¦¤Î¥³¡¼¥É¤Ï¡¢
$config = array(
'scriptPath' => '/path/to/views', // for Zend_View
'compile_dir' => '/path/to/templates_c', // for Smarty
);
$view = new Zend_View_Smarty($config);
$view->foo = 'FOO';
$view->now = time();
echo $view->render('template.tpl');
¤È¤¤¤¦¤è¤¦¤Ë¡¢Ä̾ï¤ÎZend_View¤ò»È¤Ã¤¿¾ì¹ç¤ÈƱÍͤ˽ñ¤±¤ë¡£°ìÊý¸Æ¤Ó½Ð¤µ¤ì¤ë¥Æ¥ó¥×¥ì¡¼¥È¥Õ¥¡¥¤¥ëtemplate.tpl¤Ï¡¢
<p>foo is {$foo|escape}.</p>
<p>now is {$now|date_format:'%D %T'}
¤Ê¤ó¤ÆSmartyµË¡¤ò»È¤Ã¤Æ½ñ¤±¤ë¡£
Smarty¤Î¥¥ã¥Ã¥·¥åµ¡¹½¤ò»È¤¤¤¿¤¤¾ì¹ç¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¡£
$config = array(
'scriptPath' => '/path/to/views', // for Zend_View
'compile_dir' => '/path/to/templates_c', // for Smarty
'cache_dir' => '/path/to/cache', // for Smarty
);
$view = new Zend_View_Smarty($config);
$view->getSmarty()->caching = true;
if (!$view->isCached('template.tpl')) {
$view->foo = 'FOO';
$view->now = time();
}
echo $view->render('template.tpl');
¥¥ã¥Ã¥·¥åÀ©¸æ¤Ëcache_id¤äcompile_id¤ò»È¤¤¤¿¤¤¾ì¹ç¤Ï¡¢isCached¤ärender¤Î°ú¿ô¤È¤·¤ÆÅϤ¹¤Î¤Ç¤Ï¤Ê¤¯¡¢$view->setCacheId('[CACHE_ID]')¤ä$view->setCompileId('[COMPILE_ID]')¤Ê¤É¤Î¥»¥Ã¥¿¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ¡¢¤¢¤é¤«¤¸¤áView¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥»¥Ã¥È¤¹¤ë¡£¤¢¤È¾åµ¥µ¥ó¥×¥ë¥³¡¼¥É¤Ë¤â¤¢¤ë¤±¤ì¤É¤â¡¢$view->getSmarty()¤ÇView¤ÎÆâÉô¤Ë¤â¤ÄSmarty¥ª¥Ö¥¸¥§¥¯¥È¤Ë¥¢¥¯¥»¥¹¤Ç¤¤ë¤ó¤Ç¡¢Smarty¤Ë´Ø¤¹¤ëºÙ¤«¤¤À©¸æ¤ò¹Ô¤¤¤¿¤¤¾ì¹ç¤Ï¡¢¤½¤ì·Ðͳ¤Ç¹Ô¤¨¤Ð¤¤¤¤¡£
¤Þ¤¿¡¢Smarty¤«¤éZend_View¤Îµ¡Ç½¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤ÎSmartyÍѤΥץ饰¥¤¥ó¤âºî¤Ã¤Æ¤ß¤¿¡£helper¥×¥é¥°¥¤¥ó¤Ï¡¢
{helper name="[HELPER NAME]" params....}
¤È¤¤¤¦µË¡¤Ç¡¢Zend_View¤Îhelperµ¡Ç½¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤¤ë¡£¤Þ¤¿¡¢render¥×¥é¥°¥¤¥ó¤Ï¡¢
{render file="[TEMPLATE_FILE]"}
¤È¤¤¤¦µË¡¤Ç¡¢Zend_View¤Îrender¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤¤ë¡£
Smarty¤Ë¤âɸ½à¤Çinclude¤Î¤è¤¦¤Ê³°Éô¥Æ¥ó¥×¥ì¡¼¥È¤ò¸Æ¤Ó½Ð¤¹µ¡Ç½¤ÏÍѰդµ¤ì¤Æ¤¤¤ë¤¬¡¢Smarty¤Îinclude¤À¤ÈSmarty¥ª¥Ö¥¸¥§¥¯¥È¤Îtemplate_dir¤ò¥Ù¡¼¥¹¤Ë¥Æ¥ó¥×¥ì¡¼¥È¥Õ¥¡¥¤¥ë¤¬¸¡º÷¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ë¡£°ìÊýZend_View::render¤Ç¤ÏaddScriptPath¤Ê¤É¤Ë¤è¤ëÊ£¿ô¥Ç¥£¥ì¥¯¥È¥ê¤«¤é¤Î¥Æ¥ó¥×¥ì¡¼¥È¥Õ¥¡¥¤¥ë¸¡º÷¤¬¹Ô¤ï¤ì¤ë¤Î¤Ç¡¢¥Æ¥ó¥×¥ì¡¼¥È¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹¤ÎÌäÂê¤ò°ì¸µ²½¤¹¤ë¤¿¤á¤Ë¡¢render¥×¥é¥°¥¤¥ó¤ò·Ðͳ¤·¤¿Êý¤¬¤¤¤¤¡£
¤È¤¤¤Ã¤¿´¶¤¸¤Ç¡¢Zend_View¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤äµ¡Ç½¤ò°ìÄ̤ê»È¤¤¤Ä¤Ä¤â¡¢Smarty¤Îµ¡Ç½¤â°ìÄ̤ê»È¤¨¤ë¤è¤¦¤ÊView¥¯¥é¥¹¤òºî¤Ã¤Æ¤ß¤¿¤ï¤±¤À¤±¤ì¤É¤â¡¢¼ÂºÝÌäÂêZend Framework 0.1.2¤Î¼ÂÁõ¤Ç¤Ï¤³¤¦¤¤¤¦½ñ¤Êý¤Ï¤Ç¤¤Ê¤¤¤ï¤±¤Ç¡¢¤Ç¤¤ì¤Ð¤½¤ÎÊÕ¤ò²¿¤È¤«¤·¤Æ¤â¤é¤¤¤¿¤¤¡£¤â¤¦¤Á¤ç¤Ã¤È¤¤¤í¤¤¤í»î¤·¤Æ¤ß¤Æ¤«¤é¡¢ML¤Ë¤Ç¤â¤½¤ÎÊÕ¤ÎÏäòÅꤲ¤Æ¤ß¤è¤¦¡£Ã¯¤«Âå¤ï¤ê¤ËÅꤲ¤Æ¤â¤é¤Ã¤Æ¤â¤¤¤¤¤Ç¤¹¡£±Ñ¸ì¤Ç½ñ¤¯¤Î¤á¤ó¤É¤¤¡£
ML¤ËÅꤲ¤¿
¤¤¤¤È¿±þ¤¬¤¢¤ë¤È¤¦¤ì¤·¤¤¤ó¤À¤±¤É¡£
_ Zend Framework¤ò¤É¤¦»È¤¦¤« ¤½¤Î9¤À¤Ã¤±¡©
¤Ã¤Ä¡¼¤«Zend Framework¤ÎController¤ÈView°Ê³°¤Î¹½À®Í×ÁǤϡ¢Ã±¤Ëº£»þ¤Ã¤Ý¤µ¡Ü½ÅÍ×Å٤ι⤵½ç¤Ë¥Ô¥å¥¢PHP5¤Ç½ñ¤¤ª¤í¤·¤Æ¤¤¤ë¡¢PEAR¥é¥¤¥Ö¥é¥ê¤Î¾Æ¤Ä¾¤·¤ß¤¿¤¤¤Ê¤â¤ó¤À¤è¤Ê¡¼¡£
PEAR¤¬PHP4¤ÎÉé¤Î°ä»º¤ò·Ñ¾µ¤·¤Æ¤·¤Þ¤Ã¤ÆPHP5¥Õ¥ëÂбþ¤¬¿Ê¤Þ¤Ê¤¤¤ó¤Ç¡¢¤â¤¦PEAR¤òPHP5ÍѤȤ·¤Æ¤â·Ñ³¤µ¤»¤ë¤Î¤Ï¤¢¤¤é¤á¤Æ¡¢PEARÁêÅö¤Î¥é¥¤¥Ö¥é¥ê¤Î¥Ô¥å¥¢PHP5ÈǤò¤³¤Ã¤Á¤ÇºÆ¹½ÃÛ¤¹¤ë¤Ä¤â¤ê¤Ê¤Î¤¸¤ã¤Ê¤«¤í¤¦¤«¡£¤¿¤À¡¢¤½¤¦¤¤¤Ã¤Á¤ã¤¦¤ÈPEAR´Ø·¸¼Ô¤È¤â¤á¤½¤¦¤À¤«¤é¡¢¡Ö¤³¤Ã¤Á¤Ï¥é¥¤¥Ö¥é¥ê½¸¤Ç¤Ï¤Ê¤¯¤Æ¡¢¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Ê¤ó¤Ç¤¹¡£ÊÌʪ¤Ç¤¹¡×¤È¸À¤¤Ä¥¤ë¤¿¤á¤Ë¡¢Zend Framework¤È¤¤¤¦Ì¾Á°¤òÉÕ¤±¤¿¤È¤«¡Ê¼Ù¿ä¡Ë¡£
¤Þ¤¢¤½¤ì¤Ï¤½¤ì¤Ç¤¤¤¤¤ó¤À¤±¤É¡¢PEAR¤è¤ê¤âZend Framework¤ÎÊý¤¬¥é¥¤¥»¥ó¥¹¤È¤«¤Î°·¤¤¤¬²ø¤·¤¤¤Î¤¬µ¤¤Ë¤Ê¤ë¤Ê¡¼¡£³Æ¥½¡¼¥¹¤Î¥Ø¥Ã¥À¤Ë½ñ¤«¤ì¤Æ¤¤¤ë¥é¥¤¥»¥ó¥¹¤ÎURL¤ÏNot Found¤À¤·¡£¤Þ¤¢ÇÛÉÛ¥¢¡¼¥«¥¤¥Ö¤Ë¤ÏLICENSE.txt¤¬Æþ¤Ã¤Æ¤¤¤ë¤±¤É¡£
¤È¤³¤í¤Ç¤³¤ÎZend Framework License¤Ã¤Æ¡¢Zend FrameworkÁ´ÂΤǤϤʤ¯¡¢¹½À®¤¹¤ë¥é¥¤¥Ö¥é¥êñÂΤˤâŬÍѤµ¤ì¤ë¤ó¤À¤è¤Í¡£Zend_View_Smarty¤ß¤¿¤¤¤Ê¥³¡¼¥É¤Ï¡¢Zend_View_Abstract¤ò·Ñ¾µ¤·¤Æ¤¤¤ë¤«¤éZend Framework License 1.0¤Î¥½¡¼¥¹¤Ë°Í¸¤·¤Æ¤¤¤ë¤ï¤±¤À¤±¤É¡¢Zend_View_Abstract¼«ÂΤòºÆÇÛÉÛ¤·¤Æ¤¤¤ë¤ï¤±¤¸¤ã¤Ê¤¤¤«¤é¡¢Zend Framework License¤Î±Æ¶Á¤Ï¼õ¤±¤Ê¤¤¤è¤Í¡£Zend Framework License¤Ê¥³¡¼¥É¼«ÂΤò²þÊѤ·¤¿¤ê¤·¤ÆºÆÇÛÉÛ¤¹¤ëºÝ¤Ë¤Ï¡¢Zend Framework License¤ò°Ý»ý¤¹¤ëɬÍפ¬¤¢¤ë¤ó¤À¤í¤¦¤±¤É¡£
¤È¤«¤¤¤¦¥é¥¤¥»¥ó¥¹ÏäϤª¤¤¤Æ¤ª¤¤¤Æ¡¢°ì±þController¤ÈView°Ê³°¤Î¹½À®Í×ÁǤâ°ìÄ̤긫¤Æ¤¤¤¯¤«¡£
2006-03-22 [ĹǯÆüµ]
_ Zend Framework¤ò¤É¤¦»È¤¦¤« ¤½¤Î4
Zend Framework¤Î´¶¿¨¤À¤±³Î¤«¤á¤ë¤Ä¤â¤ê¤À¤Ã¤¿¤ó¤À¤±¤É¡¢»×¤Ã¤¿¤è¤ê¤â¿¼Äɤ¤¤·¤¹¤®¤Æ¤¤¤ëµ¤¤¬¤¹¤ë¤Ê¡£¤Ç¤â¤Þ¤¢¤¤¤º¤ì¤ä¤é¤Ê¤¤ã¤Ê¤é¤Ê¤¤¤³¤È¤À¤«¤é¡¢º£¤ä¤Ã¤Æ¤ª¤¤¤Æ¤â̵Â̤ˤϤʤë¤Þ¤¤¡£
¤Ç¡¢¤µ¤¹¤¬¤Ë¤½¤í¤½¤í¥³¡¼¥É¤òÄɤ¦¤À¤±¤¸¤ã¤Ê¤¯¤Æ¡¢¼ÂºÝ¤Ëư¤«¤·¤Æ¤ß¤è¤¦¤Ã¤Æ¤³¤È¤Ç¡¢¥µ¥ó¥×¥ë¤òºî¤Ã¤ÆÆ°¤«¤·¤Æ¤ß¤¿¡£¤¿¤À¡¢É¸½à¤Îmod_rewrite¤òÁ°Äó¤È¤·¤¿Router¤À¤Èµ¤·Ú¤Ë¥Æ¥¹¥È¤Ç¤¤Ê¤¤¤ó¤Ç¡¢
<?php
Zend::loadInterface('Zend_Controller_Router_Interface');
class MyRouter implements Zend_Controller_Router_Interface
{
public function route(Zend_Controller_Dispatcher_Interface $dispatcher)
{
$path = $_SERVER['PATH_INFO'];
$path = explode('/', trim($path, '/'));
$controller = $path[0];
$action = isset($path[1]) ? $path[1] : null;
if (!strlen($controller)) {
$controller = 'index';
$action = 'index';
}
$params = array();
for ($i=2; $i<sizeof($path); $i=$i+2) {
$params[$path[$i]] = isset($path[$i+1]) ? $path[$i+1] : null;
}
$actionObj = new Zend_Controller_Dispatcher_Token($controller, $action, $params);
if (!$dispatcher->isDispatchable($actionObj)) {
throw new Zend_Controller_Router_Exception('Request could not be mapped to a route.');
} else {
return $actionObj;
}
}
}
?>
¤ß¤¿¤¤¤ËPATH_INFO¤«¤éAction¤ò²ò·è¤¹¤ë¤è¤¦¤Ë¤·¤¿Router¡Ê¾åµ¥½¡¼¥¹¤Ï¡¢REQUEST_URI¤ÎÂå¤ï¤ê¤ËPATH_INFO¤ò»È¤¦¤è¤¦¤Ë¤·¤¿°Ê³°¤Ï¡¢Zend_Controller_Router¤È¤Û¤È¤ó¤ÉƱ¤¸¡Ë¤òÍѰդ·¤Æ¤ª¤¤¤Æ¡¢
Zend::loadClass('Zend_Controller_Front');
$controller = Zend_Controller_Front::getInstance();
$controller->setRouter(new MyRouter());
$controller->setControllerDirectory('/path/to/app');
$controller->dispatch();
¤È¤¤¤¦É÷¤ËRouter¤òº¹¤·Âؤ¨¤ÆÆ°¤«¤¹¡£¤¹¤ë¤È¡¢
http://example.com/path/to/sample.php/[CONTROLLER]/[ACTION]
¤Ê¤ó¤Æ´¶¤¸¤Ç¥¢¥¯¥»¥¹¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ë¡£¤¢¤ë¤¤¤Ïaction=[CONTROLLER]/[ACTION]¤È¤«¡¢module=[CONTROLLER]&action=[ACTION]¤È¤«¤ÎQUERY_STRING¤«¤é²ò·è¤¹¤ëÊý¤¬¥Æ¥¹¥ÈÍѤˤϤ¤¤¤¤Î¤«¤Ê¡£
¤Þ¤¢¤½¤ó¤ÊÉ÷¤Ë¤·¤ÆÆ°ºî¤µ¤»¤¿¤È¤³¤í¡¢»×¤Ã¤¿¤è¤¦¤Ê´¶¤¸¤Çưºî¤·¤Æ¤¯¤ì¤Æ¤¤¤ë¤ó¤Ç¡¢º£¤Þ¤Ç¥½¡¼¥¹¤È¥Þ¥Ë¥å¥¢¥ë¤òÆÉ¤ó¤À¤À¤±¤ÇÍý²ò¤·¤Æ¤¤¿¤³¤È¤Ï¡¢ÆÃ¤ËÂ礤¯¤Ï³°¤·¤Æ¤Ï¤¤¤Ê¤¤ÌÏÍÍ¡£
¤È¤¤¤¦¤ï¤±¤Ç¡¢¤·¤Ð¤é¤¯¼ÂºÝ¤Ë¤¤¤í¤¤¤íư¤«¤·¤Æ»î¤·¤Æ¤ß¤ë¤³¤È¤Ë¤¹¤ë¡£
_ [Zend Framework: Zend Framework¤ò¤É¤¦»È¤¦¤« ¤½¤Î5
¥×¥é¥°¥¤¥ó¤¬¹Í¤¨¤¿¤È¤ª¤ê¤Ëư¤¯¤«¤É¤¦¤«¥Æ¥¹¥È¡£
<?php
Zend::loadClass('Zend_Controller_Plugin_Abstract');
class AuthPlugin extends Zend_Controller_Plugin_Abstract
{
public function routeShutdown($action)
{
if (!session_id()) {session_start();}
if ($this->_isLogin()) {return $action;}
$action->setControllerName('login');
$action->setActionName('index');
return $action;
}
private function _isLogin()
{
if (isset($_SESSION['login'])) {return true;}
if (($_POST['id'] == 'testid') && ($_POST['pwd'] == 'testpwd')) {
$_SESSION['login'] = true;
return true;
}
return false;
}
}
?>
¤Ê´¶¤¸¤Çǧ¾Ú¥×¥é¥°¥¤¥ó¤â¤É¤¤òºî¤ë¡£routeStartup¤Ç¤ÏAction¤¬½ñ¤´¹¤¨¤é¤ì¤Ê¤¤¤ó¤Ç¡¢routeShutdown¤ÎÊý¤ò¥Õ¥Ã¥¯¡£¾å¤Î¥³¡¼¥É¤Ç¤Ï¡¢¸µ¤ÎAction¤ò³è¤«¤·¤Æ¡¢Controller̾¤ÈAction̾¤òǧ¾Ú¥Ú¡¼¥¸¤Ë½ñ¤´¹¤¨¤Æ¤¤¤ë¤±¤É¡¢¤³¤¦¤ä¤Ã¤ÆÁ´Á³°ã¤¦Action¤Ë¥Þ¥Ã¥×¤·Ä¾¤¹¾ì¹ç¤Ï¡¢
return new Zend_Controller_Dispatcher_Token([CONTROLLER], [ACTION]);
¤È¤¤¤¦É÷¤Ë¡¢ËÜÅö¤ÏToken¼«ÂΤòºî¤êľ¤·¤¿Êý¤¬¤¤¤¤¤è¤Í¡£¤Ç¤â¤Þ¤¢¤½¤Î¤Þ¤Þ¤Ë¤·¤Æ¤ª¤³¤¦¡£¤Ç¡¢FrontController¤òºî¤ë¤È¤¤Ë¡¢
Zend::loadClass('Zend_Controller_Front');
$controller = Zend_Controller_Front::getInstance();
$controller->setControllerDirectory('/path/to/controllers');
$controller->registerPlugin(new AuthPlugin());
$controller->dispatch();
¤Ê¤ó¤Æ´¶¤¸¤Ç¡¢¥×¥é¥°¥¤¥ó¤òÅÐÏ¿¤·¤Æ¤«¤édispatch¤¹¤ë¡£¤¹¤ë¤È¡¢¤É¤ÎAction¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤â¡¢É¬¤º»öÁ°¤ËAuthPlugin¤¬¸Æ¤Ð¤ì¤ë¤è¤¦¤Ë¤Ê¤ê¡¢Ç§¾Ú¤ËÄ̤äƤ¤¤Ê¤«¤Ã¤¿¤é¶¯À©Åª¤ËAction¤ÏLoginController::indexAction¤Ëº¹¤·Âؤ¨¤é¤ì¤ë¤è¤¦¤Ë¤Ê¤ë¡£LoginController¤Ï
Zend::loadClass('Zend_Controller_Action');
class LoginController extends Zend_Controller_Action
{
public function indexAction()
{
Zend::loadClass('Zend_View');
$view = new Zend_View();
$view->setScriptPath('/path/to/views');
echo $view->render('login.php');
}
public function noRouteAction()
{
echo get_class($this) . '->' . 'noRouteAction';
var_dump($this->_getAllParams());
}
}
¤Ê´¶¤¸¤Ç¡¢login.php¤Ï¡¢
<form method="post"> ID: <input type="text" name="id" /><br /> Password: <input type="password" name="pwd" /><br /> <input type="submit" value="login" /> </form>
¤Ê´¶¤¸¡£¤³¤ì¤Ç¥×¥é¥°¥¤¥ó¤ò»È¤Ã¤¿Ç§¾Ú½èÍý¤¬¼Â¸½¤Ç¤¤ë¡£¤¿¤À¡¢¤³¤³¤Ç¤Ïñ¤Ëǧ¾Ú¤òÄ̤¹¤À¤±¤À¤±¤ì¤É¤â¡¢¤Õ¤Ä¤¦¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ê¤é¤Ðǧ¾Ú¤µ¤ì¤¿¥æ¡¼¥¶¡¼¸ÇͤξõÂÖ¤òÊÝ»ý¡¦»²¾È¤Ç¤¤ë¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ë¡£¤½¤¦¤¤¤¦µ¡Ç½¤ò¼õ¤±»ý¤Ä¤â¤Î¤ÏZend Framework¤Ë¤Ï¸«¤¢¤¿¤é¤Ê¤¤¤Ã¤Ý¤¤¤ó¤Ç¡¢¼«Á°¤Ç¥»¥Ã¥·¥ç¥ó¤Ë¥æ¡¼¥¶¡¼¥¯¥é¥¹¤È¤«¤òÆþ¤ì¤Æ¤ª¤¯¤È¤«¡¢Zend::registry¤¢¤¿¤ê¤Ç»ý¤Á²ó¤¹¤È¤«¤¹¤ëɬÍפ¬¤¢¤ë¤À¤í¤¦¡£
_ Zend Framework¤ò¤É¤¦»È¤¦¤« ¤½¤Î6
¤µ¤ÆÂ³¤¤¤Æ¤Ï¡¢°ìÈÖ¤¤¤¸¤ê¤¬¤¤¤¬¤¢¤Ã¤Æ¡¢¤·¤«¤âº£¸å¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤¬ÊѤï¤ê¤½¤¦¤Êµ¤ÇÛ¤¬Ç»¸ü¤ÊZend_View¼þ¤ê¤ò¤¤¤¸¤Ã¤Æ¤ß¤è¤¦¡£¤Þ¤º¤Ï¡¢ Zend Framework¤ò¤É¤¦»È¤¦¤« ¤½¤Î2¤ÇͽÁÛ¤·¤¿¡¢Zend_View::renderÆâ¤Ç$this->render¤·¤¿¾ì¹ç¤Ë¡¢Àµ¤·¤¯¥ì¥ó¥À¥ê¥ó¥°¤µ¤ì¤ë¤«¤É¤¦¤«¤Î¥Æ¥¹¥È¡£
$view = new Zend_View();
$view->setScriptPath('/path/to/views');
$view->foo = 'FOO';
$view->render('index.php');
¤Ê¤ó¤Æ´¶¤¸¤Ç¸Æ¤Ó½Ð¤·¡¢index.php¤ÎÊý¤Ç¡¢
<p>header</p>
<?php $this->render('body.php'); ?>
<p>footer</p>
¤Ê¤ó¤Æ½ñ¤¤¤Æ¡¢body.php¤Ç¤Ï¡¢
<p>foo value is <?php echo $this->escape($this->foo); ?></p>
¤È½ñ¤¯¤È¡¢
<p>header</p> <p>foo value is FOO</p> <p>footer</p>
¤È½ÐÎϤ¬ÆÀ¤é¤ì¤¿¡£¤Á¤ã¤ó¤ÈÆþ¤ì»Ò¤Îrender¤â¼Â¹Ô¤·¤Æ¤¯¤ì¤ë¤ß¤¿¤¤¤À¤Í¡£¤Á¤Ê¤ß¤Ëindex.php¤Ç¤Ï¡¢
<p>header</p>
<?php echo $this->render('body.php'); ?>
<p>footer</p>
¤Èrender¤ÎÌá¤êÃͤòecho¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤â¤·¤Ê¤¯¤Æ¤â·ë²Ì¤ÏƱ¤¸¡£¤È¤¤¤¦¤Î¤Ï¡¢Zend_View::render¤ÏÆþ¤ì»Ò¤ÎÃæ¤Ç¸Æ¤Ð¤ì¤¿¾ì¹ç¤Ï¡¢½ÐÎÏ·ë²Ì¤òʸ»úÎó¤ÇÊÖ¤µ¤º¡¢¿Æ¤Îrender¤Çob_start¤µ¤ì¤¿½ÐÎϥХåե¡¥ê¥ó¥°¤Ë¤¯¤Ã¤Ä¤±¤Æ½ÐÎϤ·¡¢¿Æ¤Îrender¤¬½ª¤ï¤Ã¤¿Ãʳ¬¤Ç¤Þ¤È¤á¤Æ·ë²Ì¤òÊÖ¤¹¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¤é¡£¤È¤¤¤¦¤ï¤±¤ÇÍøÍѼԥì¥Ù¥ë¤Ç¤Ïecho¤ò¤Ä¤±¤Æ¤â¤Ä¤±¤Ê¤¯¤Æ¤â¤¤¤¤¤ï¤±¤À¤±¤É¡¢³«È¯¼Ô¤Ï¤É¤Ã¤Á¤Îµ½ÒË¡¤ò´ðËܤˤ¹¤ë¤Ä¤â¤ê¤Ê¤ó¤À¤í¤¦¤Ê¡£¤Þ¤¢Â礷¤¿ÌäÂê¤Ç¤Ï¤Ê¤¤¤±¤É¡£
¤Á¤Ê¤ß¤Ë¾åµ¥µ¥ó¥×¥ë¤Ë¤â¤¢¤ë¤È¤ª¤ê¡¢View¤Ë¥»¥Ã¥È¤·¤¿ÃÍ¤ÏÆþ¤ì»Ò¤ÎÃæ¤Îrender¤Ç¸Æ¤Ð¤ì¤¿¥Æ¥ó¥×¥ì¡¼¥È¡ÊPHP¥³¡¼¥É¡Ë¤ÎÃæ¤Ç¤â¤Õ¤Ä¤¦¤Ë»È¤¨¤ë¡£¤È¤¤¤¦¤«¡¢render¤¬Æþ¤ì»Ò¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¤â¡¢¸Æ¤Ó½Ð¤¹View¥ª¥Ö¥¸¥§¥¯¥È¼«ÂΤÏÊѤï¤é¤Ê¤¤¡árender¤µ¤ì¤ëPHP¥³¡¼¥É¤Î¥¹¥³¡¼¥×¤ÏÊѤï¤é¤Ê¤¤¤«¤é¡¢¤Þ¤¢Åö¤¿¤êÁ°¡£¤â¤Á¤í¤ó¡¢
<?php $view = new Zend_View(); $view->render('foo.php'); ?>
¤È¤«ÌÀ¼¨Åª¤ËÊ̤ÎView¥ª¥Ö¥¸¥§¥¯¥È¤òºî¤Ã¤¿¤é¡¢Ê̤Υ¹¥³¡¼¥×¤Ç¥ì¥ó¥À¥ê¥ó¥°¤µ¤ì¤ë¤±¤É¤Í¡£¥Ñ¡¼¥Ä¤ò¥ì¥ó¥À¥ê¥ó¥°¤¹¤ë¤È¤¤Ë¡¢»È¤¨¤ë¡Ê¸«¤¨¤ë¡ËÃͤòÀ©¸Â¤·¤¿¤¤¾ì¹ç¤Ï¡¢¤½¤¦¤¤¤¦»È¤¤Êý¤â¤¢¤ë¤«¤â¡£
_ Zend Framework¤ò¤É¤¦»È¤¦¤« ¤½¤Î7
¤Ò¤È¤Þ¤º¡¢¤½¤Î¾¤Î¥Æ¥ó¥×¥ì¡¼¥È¥¨¥ó¥¸¥ó¤ò»È¤ï¤º¡¢¤ªºîË¡¤Ë§¤Ã¤ÆZend_View¤ò»È¤¦¥¢¥×¥í¡¼¥Á¤Ë¤Ä¤¤¤Æ¹Í¤¨¤Æ¤ß¤ë¡£Zend Framework¤ÎÀ߷פ϶ڤ¬¤¤¤¤¤ó¤Ç¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î½èÍý¤Îή¤ì¤Ë´Ø¤¹¤ë¥³¡¼¥É¤Ï¤¤ì¤¤¤Ëµ½Ò¤Ç¤¤ë¤·¡¢PHP¸À¸ì¼«ÂΥƥó¥×¥ì¡¼¥ÈµË¡¤ß¤¿¤¤¤Ê¤â¤ó¤À¤È¹Í¤¨¤ì¤Ð¡¢HTML¥Æ¥ó¥×¥ì¡¼¥È¡ÊZend_View¤Çrender¤¹¤ë¥Õ¥¡¥¤¥ë¡Ë¤â¤¤Á¤ó¤È¥í¥¸¥Ã¥¯¤ÈʬΥ¤·¤Æ´ÉÍý¤Ç¤¤ë¡£
¤±¤É¡¢¤ä¤Ã¤Ñ¤ê<?php echo $this->escape($this->foo); ?>¤È¤¤¤¦µË¡¤Ï²æËý¤Ç¤¤Ê¤¤¡£½ñÀҤǤâ¾åµ¤Î¤è¤¦¤ÊµË¡¤Ï²æËý¤Ç¤¤Ê¤¯¤Æ¡¢¥·¥ç¡¼¥È¥¿¥°¤ò͸ú¤Ë¤·¤Æ¡¢<?=h($foo) ?>*1¤ß¤¿¤¤¤Êµ½Ò¤òºÎÍѤ·¤¿¤·¡¢¥·¥ç¡¼¥È¥¿¥°¤¬»È¤¨¤Ê¤¤¾ì¹ç¤ÎÂåÂØ¼êÃʤȤ·¤Æ¤â¡¢<?php eh($foo); ?>*2¤òºÎÍѤ·¤¿¡£Ã±¤Ë¥Æ¥ó¥×¥ì¡¼¥ÈÊÑ¿ô¤òŸ³«¡Ê¥¨¥¹¥±¡¼¥×ÉÕ¤¡Ë¤¹¤ë¤À¤±¤Ê¤é¡¢¤³¤ÎÄøÅÙ¤ÎÆþÎϤ·¤ä¤¹¤µ¡õ²ÄÆÉÀ¤ÎÎɤµ¤ò´üÂÔ¤·¤¿¤¤¡£
¤Ç¤Ï¡¢¤É¤¦¤ä¤Ã¤ÆZend_View¤ò¥Ù¡¼¥¹¤Ë¾åµ¤Î¤è¤¦¤ÊÆþÎϤ·¤ä¤¹¤µ¡õ²ÄÆÉÀ¤ÎÎɤµ¤ò³ÍÆÀ¤¹¤ë¤«¡£¥¢¥×¥í¡¼¥Á¤Ï¤¤¤í¤¤¤í¹Í¤¨¤Ä¤¯¤±¤ì¤É¤â¡¢¤Ò¤È¤Þ¤ºZend_View¤ò³ÈÄ¥¤¹¤ë¤Þ¤Ã¤È¤¦¤Ê¼êÃʤǤ¢¤ëhelper¤ò»È¤Ã¤Æ½ñ¤¤¤Æ¤ß¤ë¤³¤È¤Ë¤¹¤ë¡£
¤È¤¤¤Ã¤Æ¤â¡¢helper¤Ïñ¤ËZend_View¤ÎÃæ¤«¤é$this->[helperName]¤Ç¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤¤ë¤È¤¤¤¦°Ê¾å¤Îµ¡Ç½¤Ï»ý¤Á¹ç¤ï¤»¤Æ¤¤¤Ê¤¤¤ó¤Ç¡¢escape¤Î¥·¥ç¡¼¥È¥«¥Ã¥È´Ø¿ô¤òÄêµÁ¤¹¤ë¤¯¤é¤¤¤Ë¤·¤«»È¤¨¤½¤¦¤Ë¤Ê¤¤¡£
class Zend_View_Helper_E
{
public function E($value)
{
return htmlspecialchars($value);
}
}
¤Ê¤ó¤Æhelper¤ò½ñ¤¤¤Æ¡¢$view->setHelperPath('/path/to/helpers')¤·¤Æ¤«¤é¡¢
<?php echo $this->e($this->foo); ?>
¤¹¤ëÄøÅÙ¤¬´Ø¤Î»³¤«¡£¤Á¤ç¤Ã¤È¤Ïû¤¯¤Ê¤Ã¤¿¤±¤É¡¢²ÄÆÉÀ¤¬¹â¤¤¤È¤Ï¤È¤Æ¤â¸À¤¨¤Ê¤¤¡£¤¢¤ë¤¤¤Ï¡¢
class Zend_View_Helper_E
{
public function E($value)
{
echo htmlspecialchars($value);
}
}
¤È¤·¤Á¤ã¤Ã¤Æ¡¢
<?php $this->e($this->foo); ?>
¤È¤¹¤ì¤Ð¤â¤Ã¤Èû¤¯¤Ê¤ë¤±¤É¡¢¤³¤ì¤À¤È¥Æ¥ó¥×¥ì¡¼¥ÈÊÑ¿ô¤ò½ÐÎϤ·¤Æ¤¤¤ë¤è¤¦¤Ë¸«¤¨¤Ê¤¯¤Ê¤Ã¤Á¤ã¤¦¤ó¤Ç¡¢Ã»¤¯¤Ê¤Ã¤Æ¤â²ÄÆÉÀ¤ÏÍî¤Á¤Æ¤ëµ¤¤¬¤¹¤ë¤·¤Ê¡¼¡£¤Þ¤¢´·¤ì¤ì¤Ð¤³¤ì¤Ç¤â¤¤¤¤¤«¤â¤·¤ì¤Ê¤¤¤±¤É¡£
¤È»î¤·¤Æ¤ß¤Æ¤ä¤Ã¤Ñ¤ê¡¢Zend_View¤¬escape¤òÆÃḚ̂·¤¤¤·¤Æ¤¤¤ë°ÕÌ£¤¬´¶¤¸¤é¤ì¤Ê¤¤¤è¤Ê¡¼¤ÈºÆ³Îǧ¤·¤¿¡£escapeÍѤÎhelper¤òɸ½à¤ÇÍѰդ·¤Æ¤ª¤±¤Ð¤½¤ì¤Ç¤¤¤¤¤¸¤ã¤ó¡£helper¤Î½ñ¤´¹¤¨¤âaddHelperPath¤·¤Æ¾å½ñ¤¤¹¤ì¤Ð¤¤¤¤¤ï¤±¤À¤·*3¡£Zend_View¤¬escape¤òÆÃḚ̂·¤¤¤·¤Æ¤¤¤ë¤Î¤Ï¡¢¡Öescape½ÅÍסª¡×¤È¤¤¤¦¥Ý¥ê¥·¡¼¤òÃΤ餷¤á¤ë¤¿¤á¤È¤«¡¢helper¤è¤ê¤âÈÆÍÑÀ¤ÎÄ㤤¼ÂÁõ¤Ë¤¹¤ë¤³¤È¤Ç¿¾¯¤Î¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¾å¤ÎÍøÅÀ¤¬¤¢¤ë¤³¤È¡¢¤¯¤é¤¤¤·¤«»×¤¤¤Ä¤«¤Ê¤¤¡£
_ Zend Framework¤ò¤É¤¦»È¤¦¤« ¤½¤Î8
¤µ¤Ã¤¤Î¥Æ¥ó¥×¥ì¡¼¥ÈŸ³«¤ÎÎã¤Ç<?=h($foo); ?>¤ß¤¿¤¤¤Êµ½Ò¤ò¼Â¸½¤¹¤ë¤¿¤á¤Ë¡¢
function showTemplate($_templateFile, $_templateVars)
{
extract($_templateVars);
include $_templateFile;
}
¤ß¤¿¤¤¤Ê´Ø¿ô¤òÍѰդ·¤Æ¤¤¤¿¡£Æ±¤¸¤è¤¦¤Ê¤³¤È¤¬Zend_View¤Ç¤â¤Ç¤¤ì¤Ð¡¢
<?php echo $this->escape($this->foo); ?>
¤Ï¡¢
<?php echo $this->escape($foo); ?>
¤È½ñ¤±¤ë¤è¤¦¤Ë¤Ê¤ë¡£$this->¤ÎϢ³¤¬¤Ê¤¯¤Ê¤Ã¤Æ¤º¤¤¤Ö¤ó¸«Ä̤·¤¬Îɤ¯¤Ê¤Ã¤¿µ¤¤¬¤¹¤ë¡£¤³¤ÎÄøÅ٤ʤé¤Ð¡¢Zend_View_Abstract¤ò·Ñ¾µ¤·¤¿¡¢
class MyView extends Zend_View_Abstract
{
protected function _run()
{
extract($this->_vars);
include func_get_arg(0);
}
}
¤È¤«ºî¤ì¤Ð´Êñ¤Ë¼Â¸½¤Ç¤¤ë¤¸¤ã¤ó¤È»×¤Ã¤¿¤ó¤À¤±¤É¡¢¥À¥á¤À¤Ã¤¿¡£¤È¤¤¤¦¤Î¤Ï¡¢$this->_vars¤Ã¤ÆZend_View_Abstract¤ÇprivateÀë¸À¤µ¤ì¤Æ¤¤¤ë¤Î¤Í¡£¤»¤á¤Æprotected¤Ë¤Ê¤é¤ó¤«¤Ê¡¼¡£¤¢¤ë¤¤¤ÏZend_View_Abstract¤Ë¡¢
public function getAllVars()
{
return $this->_vars;
}
¤Ê¤ó¤Æ¥á¥½¥Ã¥É¤òÄɲ䷤Ƥâ¤é¤¨¤Ê¤¤¤À¤í¤¦¤«¡£¤Ã¤Ä¡¼¤«¤Ê¤ó¤ÇDmytro Shteflyuk¡Çs Home » Zend Framework: Using Smarty as template engine¤Î¥³¥á¥ó¥ÈÍó¤Ç¾Ò²ð¤µ¤ì¤Æ¤¤¤¿SmartyÍѤÎView¤¬¤ï¤¶¤ï¤¶assign¤òoverride¤·¤Æ¤¤¤¿¤Î¤«¡¢¤è¤¦¤ä¤¯¤ï¤«¤Ã¤¿¤è¡£
¤³¤Î»ÅÍͤäƤɤ¦¤Ê¤ó¤À¤í¤¦¤Ê¡¼¡£·Ñ¾µ¤µ¤ì¤¿¥¯¥é¥¹¤«¤é¤â¡¢¥Æ¥ó¥×¥ì¡¼¥ÈÊÑ¿ô°ìÍ÷¤Ë¤ÏľÀÜ¿¨¤é¤»¤Ê¤¤¤è¤¦¤Ë¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤À¤í¤¦¤«¡©¡¡Ã±¤Ë¡Öprotected¤Ë¤¹¤ëÍýͳ¤¬¤Ê¤¤¤«¤éprivate¡×¤Ë¤·¤¿¤À¤±¤Ê¤é¤Ð¡¢protected¤Ë¤·¤ÆÍߤ·¤¤¤Ê¡¼¡£¤½¤¦¤¹¤ì¤Ð¡¢¤â¤Ã¤È¤Þ¤Ã¤È¤¦¤ÊSmartyÍѤÎView¤ò½ñ¤¯¤³¤È¤â¤Ç¤¤½¤¦¤À¤·¡£
¤Þ¤¢ºÇ°¡¢Zend_View_Abstract¤Î$this->_vars¤ª¤è¤Ó¤½¤Î´ØÏ¢¥á¥½¥Ã¥É¤ò´Ý¤´¤ÈMyView¤Ç¾å½ñ¤¤·¤Á¤ã¤¨¤Ð¡¢²¶¤Î¤ä¤ê¤¿¤¤¤³¤È¤Ï¤Ç¤¤ë¤è¤¦¤Ë¤Ê¤ë¤À¤í¤¦¤±¤É¡¢¤Ç¤¤ì¤Ð¤½¤¦¤¤¤¦¥¢¥×¥í¡¼¥Á¼«ÂΤò¸ø¼°¤Ë°Õ¼±¤·¤¿ºî¤ê¤Ë¤Ê¤Ã¤Æ¤¤¤ÆÍߤ·¤¤¡£¤È¤¤¤¦ÏäÏZend Framework¤ÎML¤ËÅꤲ¤Ê¤¤ã¤À¤á¤Ê¤Î¤«¡£±Ñ¸ì¤ÇµÄÏÀ¤¹¤ë¤Î¤á¤ó¤É¤¤¤Ê¡¼¡£
ML¤ÎÉßµï¤Î¹â¤µ¤Ï
±Ñ¸ì±¾¡¹¤È¸À¤¦¤è¤ê¤Ï¡¢MLÅê¹Æ¼Ô¤Î郎ï¤ä¤é¤µ¤Ã¤Ñ¤êʬ¤«¤é¤Ê¤¤¤³¤È¤À¤Ê¡£Zend Framework¤Î¥½¡¼¥¹¤Ë¤Ï³«È¯¼Ô¤Î̾Á°¤¬½ñ¤«¤ì¤Æ¤¤¤Ê¤¤¤·¡¢ML¤Ëȯ¸À¤·¤Æ¤¤¤ë¿Í¤âÆÃ¤Ë̾¾è¤Ã¤¿¤ê¤·¤Æ¤¤¤Ê¤¤¡£¤Þ¤¿¡¢´Ø·¸¼Ô¤À¤Èʬ¤«¤ë¤è¤¦¤Ê½ð̾¤ò¤Ä¤±¤Æ¤¤¤ë¿Í¤â¸«¤¢¤¿¤é¤Ê¤¤¡£
¤³¤Î¾õÂÖ¤À¤È¡¢¤É¤Îȯ¸À¤¬¤É¤¦¤¤¤¦Î©¾ì¤Ç¤Î¤â¤Î¤«Ê¬¤«¤é¤Ê¤¤¤ó¤Ç¡¢¤É¤¦¤¤¤¦¥¢¥×¥í¡¼¥Á¤Çȯ¸À¤·¤Æ¤¤¤¤¤Î¤«¤µ¤Ã¤Ñ¤êʬ¤«¤é¤Ê¤¤¡£¤¿¤È¤¨¤Ð¡¢Re: [fw-general] Smarty Plugin for view¤Ç½ñ¤«¤ì¤Æ¤¤¤ëZend_View¤ò¤â¤Ã¤ÈÃê¾Ý²½¤·¤ÆÂ¾¤Î¥Æ¥ó¥×¥ì¡¼¥È¥¨¥ó¥¸¥ó¤ËÂбþ¤Ç¤¤ë¤è¤¦¤Ë¤·¤è¤¦¡¢¤Ê¤ó¤Æ°Æ¤Ë¤Ï»¿Æ±¤¹¤ë*4¤ï¤±¤À¤±¤É¡¢¿Í´Ö´Ø·¸Åª¤Êʸ̮¤¬ÆÉ¤á¤Ê¤¤¤ó¤Ç¡¢¤É¤¦¥¢¥×¥í¡¼¥Á¤·¤Æ¤¤¤¤¤Î¤«¤µ¤Ã¤Ñ¤ê¤ï¤«¤é¤Ê¤¤¡£¤Ò¤È¤Þ¤º³ÆÅê¹Æ¼Ô¤Î̾Á°¤È¤«¤Ç¥°¥°¤Ã¤Æ¡¢¤É¤¦¤¤¤¦¿Í¤¬¤É¤¦¤¤¤¦Î©¾ì¤Ç¤É¤¦¤¤¤¦È¯¸À¤ò¤·¤Æ¤¤¤ë¤Î¤«Çİ®¤¹¤ë¤È¤³¤í¤«¤é¤Ï¤¸¤á¤Ê¤¤¤È¥À¥á¤Ê¤Î¤«¤Ê¡£
*1 h¤Ïhtmlspecialchars´Ø¿ô¤Ø¤Î¥·¥ç¡¼¥È¥«¥Ã¥È
*2 eh¤Ïecho htmlspecialcharsÁêÅö¤Îµ¡Ç½¤Ø¤Î¥·¥ç¡¼¥È¥«¥Ã¥È
*3 ¸å¤«¤éaddHelperPath¤µ¤ì¤¿¥Ñ¥¹¤¬Í¥À褵¤ì¤ë¤ó¤Ç¡¢Æ±Ì¾¤ÎÆÈ¼«¤Îhelper¤òÍѰդ¹¤ì¤Ð¾å½ñ¤¤Ç¤¤ë
*4 ¤±¤É¡¢²¶¤Î¾ì¹ç¤Ï¤Ï¤½¤³¤Þ¤Ç¤¤ì¤¤¤Ê¥¢¥×¥í¡¼¥Á¤Ë¤·¤Ê¤¯¤Æ¤â¡¢Ã±¤Ë$_vars¤òprotected¤·¤Æ¤¯¤ì¤ë¤À¤±¤Ç½½Ê¬¤Ê¤ó¤À¤±¤É¤Í
2006-03-21 [ĹǯÆüµ]
_ Zend Framework¤ò¤É¤¦»È¤¦¤«
PHP5¤Ø¤Î°Ü¹Ô¤ò·è°Õ¤·¤¿¤Î¤ÏZend Framework¤Î¸ºß¤âÂ礤¤¤ï¤±¤À¤¬¡¢Zend Framework¤¬¤É¤Î¤¯¤é¤¤¤Ç¼ÂÍÑ¥ì¥Ù¥ë¤Ë㤹¤ë¤Î¤«¡¢¸½»þÅÀ¤Ç¤ÏÁ´Á³¸«Ä̤·¤¬Î©¤Ã¤Æ¤¤¤Ê¤¤¡£¾¯¤Ê¤¯¤È¤âÈ¾Ç¯ÄøÅÙ¤ÏÂÔ¤¿¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤ó¤¸¤ã¤Ê¤¤¤«¤È»×¤ï¤ì¤ë¤ó¤Ç¡¢¤³¤³°ì¡¢Æó¥ö·îÄøÅ٤Υ¹¥Ñ¥ó¤Ç¤ÏZend Framework¤Î¸ºß¤ò°Õ¼±¤·¤Ä¤Ä¤â¡¢Zend Framework¤Ë¤¢¤Þ¤ê°Í¸¤·¤Ê¤¤¤è¤¦¤Ê¥¢¥×¥í¡¼¥Á¤ÇPHP5Âбþ¤ò¹Ô¤¦É¬Íפ¬¤¢¤ë¤À¤í¤¦¡£
¤È¤¤¤¦¤ï¤±¤Ç¡¢¤¤¤Ä¤Î¤Þ¤Ë¤«Preview 0.1.2¤Þ¤Ç½Ð¤Æ¤¤¤¿Zend Framework¤ò¿¿ÌÌÌܤ˥Á¥§¥Ã¥¯¡£¥Õ¥ì¡¼¥à¥ï¡¼¥¯¤Î¥³¥¢¤È¤Ê¤ëController¤ÈView¤Þ¤ï¤ê¤¬¤É¤ó¤Ê´¶¤¸¤Ê¤Î¤«¤Ë¤Ä¤¤¤Æ¤Ï¡¢php architect¤Îtutorial¤¬°ìÈ֤狼¤ê¤ä¤¹¤¤¥É¥¥å¥á¥ó¥È¤À¤í¤¦¡£¥Á¥å¡¼¥È¥ê¥¢¥ë¤Ê¤ó¤ÇÆâÉô¹½Â¤¤Ë¤Ï¤Û¤È¤ó¤É¿¨¤ì¤º¡¢»È¤¤Êý¤Î¥ì¥Ù¥ë¤ÎÀâÌÀ¤À¤±¤É¡£
¤Ç¡¢ÆâÉô¹½Â¤¤ÎÊý¤Ï¡¢¥Þ¥Ë¥å¥¢¥ë¤ÎController¥Ñ¡¼¥È¤È¥½¡¼¥¹¤òÆÉ¤à¸Â¤ê¤Ç¤Ï¡¢·ë¹½½ÀÆð¤Ëº¹¤·Âؤ¨²Äǽ¤ÊÌÏÍÍ¡£
$controller = Zend_Controller_Front::getInstance(); $controller->setRouter(new MyRouter()); $controller->setDispatcher(new MyDispatcher()); $controller->setControllerDirectory($controllerDirectory);
¤ß¤¿¤¤¤Ê´¶¤¸¤Ç¡¢Router¡ÊURI¤«¤éAction̾¤ò²ò·è¤¹¤ë¡Ë¤äDispatcher¡ÊRouter¤Ç²ò·è¤µ¤ì¤¿Action̾¤«¤é¡¢Action¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤·¡¢¼Â¹Ô¤¹¤ë¡Ë¤Ïº¹¤·Âؤ¨¤ë¤³¤È¤¬¤Ç¤¤ë¡£
¤¢¤È¡¢
$controller->registerPlugin(new MyPlugin());
¤È¤«¤ä¤ë¤È¡¢¥×¥é¥°¥¤¥ó¤¬ÅÐÏ¿¤Ç¤¤ë¤±¤É¡¢¥Þ¥Ë¥å¥¢¥ë¤Ë¤Ï¥×¥é¥°¥¤¥ó¤Ë´Ø¤¹¤ëµ½Ò¤¬¤Ê¤¤¡£¤¿¤À¡¢Zend_Controller_Front::dispatch¤È¡¢Zend_Controller_Plugin_Interface¤ò¸«¤ì¤Ð¤À¤¤¤¿¤¤µóư¤¬¤ï¤«¤ë¡£³Æ¥×¥é¥°¥¤¥ó¤Ë¤Ï¡¢$controller->dispatch()Ãæ¤ËȯÀ¸¤¹¤ë²¼µ¤Î¥¤¥Ù¥ó¥È¤ËÂбþ¤¹¤ë¥Ï¥ó¥É¥é¡¼¥á¥½¥Ã¥É¤ò½ñ¤¤¤Æ¤ª¤¡¢Âбþ¤·¤¿¥Ï¥ó¥É¥é¡¼¤¬¤¢¤ì¤Ð¤½¤Î¥×¥é¥°¥¤¥ó¤¬¼Â¹Ô¤µ¤ì¤ë¡Ê¤Ê¤±¤ì¤Ð¥¹¥ë¡¼¡Ë¡¢¤Ã¤Æ´¶¤¸¤À¤í¤¦¡£
- routeStartup() - $controller->getRouter()->route()Á°¡£1¥ê¥¯¥¨¥¹¥È¤´¤È¤ÎÁ°½èÍýÍѥץ饰¥¤¥ó¤Ç»È¤¦¤ó¤À¤í¤¦¡£Ç§¾Ú¤È¤«¤â¤³¤ÎÊդˤ«¤Þ¤»¤ë¤Î¤¬´ðËܤ«¤Ê¡£
- routeShutdown($action) - $controller->getRouter()->route()¸å¡£¥Ç¥Õ¥©¥ë¥È¤Îroute¤Ç²ò·è¤·¤¿Action¤ò¡¢¸åÉÕ¤±¤Ç½ñ¤´¹¤¨¤¿¤ê¥»¥Ã¥È¥¢¥Ã¥×½èÍý¤òÄɲä·¤¿¤ê¤¹¤ë¤È¤¤Ë»È¤¦¤Î¤«¤Ê¡©
- $action = dispatchLoopStartup($action) - Action¤Îdispatch½èÍý¤Ï¡¢Ìá¤êÃͤȤ·¤Æ¼¡¤ÎAction¤òÊÖ¤¹¤³¤È¤Ë¤è¤ê¡¢Ê£¿ô¤ÎAction¤ÎÏ¢º¿¼Â¹Ô¡ÊdispatchLoop¡Ë¤Ç¤¤ë¡£¤½¤ÎdispatchLoopÁ°¡£ºÇ½é¤Ë¼Â¹Ô¤¹¤ëAction¤¬²ò·è¤·¤¿¤¢¤È¤ÎÁ°½èÍýÍѤ«¡£
- $action = preDispatch($action) - Action¤ÎdispatchÁ°¡£dispatchLoopÆâ¤Ç¼Â¹Ô¤µ¤ì¤ë°ì¤Ä¤ÎAction¤´¤È¤Ë¸Æ¤Ð¤ì¤ë¡£ºÇ½é¤Ë¼Â¹Ô¤¹¤ë¤«¤É¤¦¤«¤Ë¸Â¤é¤º¡¢ÆÃÄê¤ÎAction¤ËÂФ¹¤ëÁ°½èÍý¡£
- $action = postDispatch($action) - Action¤Îdispatch¸å¡£dispatchLoopÆâ¤Ç¼Â¹Ô¤µ¤ì¤ë°ì¤Ä¤ÎAction¤´¤È¤Ë¸Æ¤Ð¤ì¤ë¡£preDispatch¤ËÂФ·¤Æ¡¢ÆÃÄê¤ÎAction¤ËÂФ¹¤ë¸å½èÍýÍѤ«¤È»×¤¤¤¤ä¡¢¤³¤ÎÃʳ¬¤Ç¤Ï$action¤Ï¼¡¤ÎAction¤Ë½ñ¤´¹¤¨¤é¤ì¤Æ¤¤¤ë¤Ï¤º¤À¤«¤é¡¢pluginÆâ¤Ç¾õÂÖ¤òÊÝ»ý¤·¤Æ¤¤¤Ê¤¤¸Â¤ê¤Ï¡¢¼¡¤ÎAction¤ÎÁ°½èÍý¤ÈÂ礷¤ÆÊѤï¤é¤Ê¤¤¤³¤È¤·¤«¤Ç¤¤Ê¤¤¤Ê¡£¤Ã¤Æ¤³¤È¤Ï¡¢ÆÃÄê¤ÎAction¤ËÂФ¹¤ëÁ°½èÍý¸å½èÍý¤ò½ñ¤¤¿¤«¤Ã¤¿¤é¡¢°ì¤Ä¤Î¥×¥é¥°¥¤¥ó¤ÇpreDispatch¤ÈpostDispatch¤ò½èÍý¤·¤Ä¤Ä¡¢¥×¥é¥°¥¤¥ó¦¤Ç¾õÂÖ¤òÊÝ»ý¤¹¤ëɬÍפ¬¤¢¤ê¤½¤¦¡£
- dispatchLoopShutdown() - dispatchLoop¸å¡£Á´ÂΤθå½èÍý¡£¤¿¤À¤·¡¢ÅÓÃæ¤Çdie¤·¤¿¤ê¤¹¤ë¥Ñ¥¿¡¼¥ó¤Ï¡Ê¾¯¤Ê¤¯¤È¤âÀµ¾ï¥ë¡¼¥È¤Ç¤Ï¡Ë¤Ê¤¤¤ó¤À¤í¤¦¤«¡©¡¡¤¢¤Ã¤¿¤é»È¤¨¤ë¾õ¶·¤Ï¸Â¤é¤ì¤Æ¤·¤Þ¤¤¤½¤¦¤À¤±¤É¡£
´ðËÜŪ¤Ê½èÍý¥Ñ¥¿¡¼¥ó¤ò¡¢Controller¡¢Router¡¢Dispatcher¡¢³ÆAction¤Ëµ½Ò¤·¤Ä¤Ä¡¢¥Ñ¥¿¡¼¥ó¤ò¤Þ¤¿¤¬¤Ã¤¿½èÍý¤Ï¥×¥é¥°¥¤¥ó¤Ç½ñ¤¤¤Æ¤¤¤¯´¶¤¸¤«¤Ê¡£¤Ê¤ó¤«¥×¥é¥°¥¤¥ó¤Ã¤ÆÌ¾Á°¤¬¤Á¤ç¤Ã¤È°ãÏ´¶¤ò´¶¤¸¤ë¤±¤ì¤É¤â¡¢»È¤¤¾¡¼ê¤È½ÀÆðÀ¤Ï¤Ê¤«¤Ê¤«¹â¤½¤¦¡£Ç§¾Ú¤È¤«¤Î¥¯¥é¥¹¤ò´ðËÜŪ¤Ê½èÍý¥Ñ¥¿¡¼¥ó¤ËÌ©·ë¹ç¤µ¤»¤ë¤È¡¢°ìµ¤¤Ë½ÀÆðÀ¤¬¼º¤ï¤ì¤¿¤ê¤¹¤ë¤â¤Î¤À¤±¤É¡¢¤½¤Î¤Ø¤ó¤Ï¥×¥é¥°¥¤¥ó¤Ë½Ð¤·¤Æ¤·¤Þ¤ª¤¦¤Ã¤Æ¤³¤È¤Ê¤ó¤À¤í¤¦¡£
¤¿¤À¡¢¤½¤¦¤Ê¤ë¤Èǧ¾Ú¤È¤«¤Î¾õÂÖ°Ý»ý¤ÏZend::register¤¢¤¿¤ê¤ò»È¤Ã¤Æ¤Í¤Ã¤ÆÏäʤΤ«¤Ê¡¼¡£¤¢¤ì¤Ï¤Á¤ç¤Ã¤ÈÈÆÍÑŪ¤ÊÆþ¤ìʪ¤¹¤®¤ë¤±¤É¡¢$controller¤¬ÊÝ»ý¤¹¤ë¤¯¤é¤¤¤À¤Ã¤¿¤éZend::register¤Ç¤âÂ礷¤ÆÊѤï¤é¤Ê¤¤¤·¤Ê¡¼¡£¤«¤È¤¤¤Ã¤ÆAction¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤Ï¼Â¹Ô¤¹¤ë½Ö´Ö¤·¤«Â¸ºß¤·¤Ê¤¤¤«¤é¡¢Action¤ò¤Þ¤¿¤¬¤Ã¤¿Æþ¤ìʪ¤È¤·¤Æ¤Ï»È¤¨¤Ê¤¤¤·¡£¥×¥é¥°¥¤¥ó¤¬¾õÂÖ¤òÊÝ»ý¤¹¤ë¤È¤¤¤¦¥¢¥×¥í¡¼¥Á¤Ï¤¢¤ê¤«¤â¤·¤ì¤Ê¤¤¤±¤É¡¢¥×¥é¥°¥¤¥ó¤Î¥¤¥ó¥¹¥


_ .cat [¤³¤ó¤Ë¤Á¤ï¡¢Zend_Log¤Ë¤Ä¤¤¤ÆÃµ¤·¤Æ¤¤¤Æ¤¿¤É¤êÃ夤ޤ·¤¿¡£Zend_Log_Adapter_Composite..]