Zend_Db_Table_Row (Àº)´Â,Zend_Db_Table ¿ÀºêÁ§Æ®ÀÇ °³°³ÀÇ ÇàÀ» Æ÷ÇÔÇÑ Å¬·¡½ºÀÔ´Ï´Ù. Å×À̺í Ŭ·¡½º¿¡ ´ëÇØ¼ Äõ¸®¸¦ ½ÇÇàÇϸé, µ¹·ÁÁÖ¾îÁö´Â °á°ú´Â Zend_Db_Table_Row ¿ÀºêÁ§Æ®¼¼Æ®°¡ µË´Ï´Ù. ÀÌ ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇØ »õ·Î¿î ÇàÀ» ÀÛ¼ºÇØ, ±×°ÍÀ» µ¥ÀÌŸº£À̽ºÀÇ Å×ÀÌºí¿¡ Ãß°¡ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
Zend_Db_Table_Row (Àº)´Â, Çà µ¥ÀÌÅÍ °ÔÀÌÆ®¿þÀÌÆÐÅÏÀ» ½ÇÀåÇÑ °ÍÀÔ´Ï´Ù.
Zend_Db_Table_Abstract ÇÏ find()
(ÀÌ)³ª
fetchAll()
±×·¸´Ù°í ÇÏ´Â ¸Þ¼Òµå¸¦ Á¦°øÇÕ´Ï´Ù.
À̰͵éÀº °¢°¢ Zend_Db_Table_Rowset ÇüÅÂÀÇ ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù.
¶Ç fetchRow()
¸Þ¼Òµå´Â,
Zend_Db_Table_Row ÇüÅÂÀÇ ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù.
·Ê 10.107. ÇàÀÇ ÃëµæÀÇ ¿¹
<?php
$bugs = new Bugs();
$row = $bugs->fetchRow($bugs->select()->where('bug_id = ?', 1));
Zend_Db_Table_Rowset ¿ÀºêÁ§Æ®¿¡´Â, º¹¼öÀÇ Zend_Db_Table_Row ¿ÀºêÁ§Æ®°¡ Æ÷ÇԵ˴ϴÙ. Ç×10.7. ¡¸Zend_Db_Table_Rowset¡¹ (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.
·Ê 10.108. Çà ¼¼Æ®³»ÀÇ ÇàÀ» ÀоîµéÀÌ´Â ¿¹
<?php
$bugs = new Bugs();
$rowset = $bugs->fetchAll($bugs->select()->where('bug_status = ?', 1));
$row = $rowset->current();
Zend_Db_Table_Row_Abstract ¿¡´Â ¾ÆÅ©¼¼»ç°¡ ÀÖ¾î, ÇàÀÇ Ä÷³À» ¿ÀºêÁ§Æ®ÀÇ ÇÁ·ÓÆÛƼ·Î¼ ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù.
·Ê 10.109. ÇàÀ¸·ÎºÎÅÍ Ä÷³À» ÀоîµéÀÌ´Â ¿¹
<?php
$bugs = new Bugs();
$row = $bugs->fetchRow($bugs->select()->where('bug_id = ?', 1));
// bug_description Ä÷³ÀÇ °ªÀ» Ãâ·ÂÇÕ´Ï´Ù
echo $row->bug_description;
![]() |
ÁÖÀÇ |
---|---|
ÃʱâÀÇ ¹öÁ¯ÀÇ Zend_Db_Table_Row ±×·³, ÀÌ·¯ÇÑ ¾ÆÅ©¼¼»ç¸¦ µ¥ÀÌŸº£À̽ºÀÇ Ä÷³°ú ´ëÀÀ½Ãų ¶§¿¡ inflection (º¯Çü) (À¸)·Î ºÒ¸®´Â ¹®ÀÚ¿ º¯È¯À» ½Ç½ÃÇϰí ÀÖ¾ú½À´Ï´Ù. ÇöÀçÀÇ Zend_Db_Table_Row ±×·³ º¯ÇüÀ» ½ÇÀåÇϰí ÀÖÁö ¾Ê½À´Ï´Ù. »ç¿ëÇÏ´Â ¾ÆÅ©¼¼»ç¸íÀº, µ¥ÀÌŸº£À̽º³»ÀÇ Ä÷³¸í°ú Á¤È®ÇÏ°Ô ÀÏÄ¡ÇÕ´Ï´Ù. |
ÇàÀÇ µ¥ÀÌÅÍ¿¡ ´ëÇØ¼ ¹è¿·Î¼ ¾×¼¼½º ÇÏ·Á¸é , Çà ¿ÀºêÁ§Æ®ÀÇ
toArray()
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
À̰ÍÀº, Ä÷³¸í°ú ±× °ªÀ» °ü·ÃÁöÀº ¿¬»ó ¹è¿À» µ¹·ÁÁÝ´Ï´Ù.
·Ê 10.110. toArray() ¸Þ¼ÒµåÀÇ »ç¿ë¿¹
<?php
$bugs = new Bugs();
$row = $bugs->fetchRow($bugs->select()->where('bug_id = ?', 1));
// Çà ¿ÀºêÁ§Æ®·ÎºÎÅÍ Ä÷³¸í/Ä¡ ÀÇ ¿¬»ó ¹è¿À» ÃëµæÇÕ´Ï´Ù
$rowArray = $row->toArray();
// Åë»óÀÇ ¹è¿°ú °°°Ô »ç¿ëÇÕ´Ï´Ù
foreach ($rowArray as $column => $value) {
echo "Ä÷³: $columnn";
echo "Ä¡: $valuen";
}
toArray()
ÇÏÁö¸¸ µ¹·ÁÁÖ´Â ¹è¿Àº, °»½ÅÇÒ ¼ö ¾ø½À´Ï´Ù.
¹è¿³»ÀÇ °ªÀ» º¯°æÇÏ´Â °ÍÀº °¡´ÉÇÕ´Ï´Ù¸¸,
±×°ÍÀ» µ¥ÀÌŸº£À̽º¿¡ º¸Á¸ÇÒ ¼ö ¾ø½À´Ï´Ù.
Zend_Db_Table_Row_Abstract Ŭ·¡½º¿¡´Â, °ü·ÃÇÏ´Â Å×ÀÌºí¿¡¼ ÇàÀ̳ª Çà ¼¼Æ®¸¦ ÃëµæÇÏ´Â ¸Þ¼Òµå°¡ Á¸ÀçÇÕ´Ï´Ù. Å×À̺íÀÇ ¸±·¹À̼ǿ¡ ´ëÇÑ »ó¼¼ÇÑ Á¤º¸´Â Ç×10.8. ¡¸Zend_Db_Table Relationships¡¹ (À»)¸¦ ÂüÁ¶ÇØ ÁֽʽÿÀ.
°³°³ÀÇ Ä÷³ÀÇ °ªÀ» ¾ÆÅ©¼¼»ç·Î ¼³Á¤ÇÏ´Â ¹æ¹ýÀº, Ä÷³À» ÀоîµéÀÌ´Â °æ¿ì¿Í °°°í, ¿ÀºêÁ§Æ®ÀÇ ÇÁ·ÓÆÛƼ¸¦ »ç¿ëÇÕ´Ï´Ù.
Ä÷³ÀÇ ¾ÆÅ©¼¼»ç¿¡ ÀÇÇÑ °ªÀÇ ¼³Á¤Àº, ¾îÇø®ÄÉÀ̼dz»ÀÇ Çà µ¥ÀÌÅÍÀÇ Ä÷³ÀÇ °ªÀº º¯°æÇÕ´Ï´Ù¸¸,
±×°Í¸¸À¸·Î´Â ¾ÆÁ÷ µ¥ÀÌŸº£À̽º¿¡ À§Å¹µÇ°í ÀÖÁö ¾Ê½À´Ï´Ù.À§Å¹ÇÏ·Á¸é
save()
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
·Ê 10.111. ÇàÀÇ Ä÷³ÀÇ ³»¿ëÀ» º¯°æÇÏ´Â ¿¹
<?php
$bugs = new Bugs();
$row = $bugs->fetchRow($bugs->select()->where('bug_id = ?', 1));
// Çϳª ȤÀº º¹¼öÀÇ Ä÷³ÀÇ °ªÀ» º¯°æÇÕ´Ï´Ù
$row->bug_status = 'FIXED';
// µ¥ÀÌŸº£À̽º³»ÀÇ ÇàÀ», »õ·Î¿î °ªÀ¸·Î UPDATE ÇÕ´Ï´Ù
$row->save();
ÁöÁ¤ÇÑ Å×ÀÌºí¿¡ »õ·Î¿î ÇàÀ» ÀÛ¼ºÇÏ·Á¸é , Å×À̺í Ŭ·¡½ºÀÇ
createRow()
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.
ÃëµæÇÑ ÇàÀÇ Çʵ忡 ´ëÇØ¼´Â °´Ã¼ ÁöÇâÀÇ ÀÎÅÍÆäÀ̽º·Î ¾×¼¼½º ÇÒ ¼ö ÀÖ½À´Ï´Ù¸¸,
save()
¸Þ¼Òµå¸¦ ÄÝ ÇÒ ¶§±îÁö´Â
½ÇÁ¦·Î µ¥ÀÌŸº£À̽ºÀÇ ³»¿ëÀÌ º¯°æµÉ °ÍÀº ¾ø½À´Ï´Ù.
·Ê 10.112. Å×ÀÌºí¿¡ »õ·Î¿î ÇàÀ» ÀÛ¼ºÇÏ´Â ¿¹
<?php
$bugs = new Bugs();
$newRow = $bugs->createRow();
// ¾îÇø®ÄÉÀ̼ǿ¡ µû¶ó ÀûÀýÈ÷ Ä÷³ÀÇ °ªÀ» ¼³Á¤ÇÕ´Ï´Ù
$newRow->bug_description = '...¼³¸í...';
$newRow->bug_status = 'NEW';
// »õ·Î¿î ÇàÀ» µ¥ÀÌŸº£À̽º¿¡ INSERT ÇÕ´Ï´Ù
$newRow->save();
createRow() ¸Þ¼ÒµåÀÇ ¿É¼ÇÀÇ Àμö·Î¼ ¿¬»ó ¹è¿À» °Ç³×ÁÙ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¿¬»ó ¹è¿¿¡¼´Â, »õ·Î¿î ÇàÀÇ Çʵ忡 ´ëÀÔÇÏ´Â °ªÀ» ÁöÁ¤ÇÕ´Ï´Ù.
·Ê 10.113. Å×ÀÌºí¿¡ »õ·Î¿î ÇàÀ» ÀÛ¼ºÇØ, °ªÀ» ´ëÀÔÇÏ´Â ¿¹
<?php
$data = array(
'bug_description' => '...¼³¸í...',
'bug_status' => 'NEW'
);
$bugs = new Bugs();
$newRow = $bugs->createRow($data);
// »õ·Î¿î ÇàÀ» µ¥ÀÌŸº£À̽º¿¡ INSERT ÇÕ´Ï´Ù
$newRow->save();
![]() |
ÁÖÀÇ |
---|---|
Zend_Db_Table ÀÇ ÃʱâÀÇ ¸±¸®½º¿¡¼´Â, |
Zend_Db_Table_Row_Abstract ÀÇ
setFromArray()
¸Þ¼Òµå¸¦ »ç¿ëÇϸé,
ÇϳªÀÇ ÇàÀÇ º¹¼öÀÇ Ä÷³À» ÇÑ ¹øÀ¸·Î ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ ¸Þ¼Òµå¿¡´Â, Ä÷³¸íÀ¸·Î °ªÀ» °ü·ÃÁöÀº ¿¬»ó ¹è¿À» ÁöÁ¤ÇÕ´Ï´Ù.
ÀÌ ¸Þ¼Òµå´Â, »õ·Î¿î ÇàÀÇ °ªÀ» ¼³Á¤ÇÏ´Â °æ¿ì³ª
±âÁ¸ÀÇ ÇàÀ» °»½ÅÇÏ´Â °æ¿ìÀÇ ¾îµð¶óµµ À¯¿ëÇϰÚÁö¿ä.
·Ê 10.114. setFromArray() ±×¸®°í »õ·Î¿î ÇàÀÇ °ªÀ» ¼³Á¤ÇÏ´Â ¿¹
<?php
$bugs = new Bugs();
$newRow = $bugs->createRow();
// µ¥ÀÌÅ͸¦ ¿¬»ó ¹è¿ Çü½ÄÀ¸·Î ÇÕ´Ï´Ù
$data = array(
'bug_description' => '...¼³¸í...',
'bug_status' => 'NEW'
);
// ¸ðµç Ä÷³ÀÇ °ªÀ» ÇÑ ¹øÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù
$newRow->setFromArray($data);
// »õ·Î¿î ÇàÀ» µ¥ÀÌŸº£À̽º¿¡ INSERT ÇÕ´Ï´Ù
$newRow->save();
Çà ¿ÀºêÁ§Æ®·Î delete()
¸Þ¼Òµå¸¦ ÄÝ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
À̰ÍÀº, ±× Çà ¿ÀºêÁ§Æ®ÀÇ ÁÖŰ¿¡ ´ëÀÀÇÏ´Â µ¥ÀÌŸº£À̽ºÀÇ ÇàÀ» »èÁ¦ÇÕ´Ï´Ù.
·Ê 10.115. ÇàÀÇ »èÁ¦ÀÇ ¿¹
<?php
$bugs = new Bugs();
$row = $bugs->fetchRow('bug_id = 1');
// ÀÌ ÇàÀ» DELETE ÇÕ´Ï´Ù
$row->delete();
º¯°æÀ» Àû¿ëÇϴµ¥ save()
(À»)¸¦ ÄÝ ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.
À̰ÍÀº, µ¥ÀÌŸº£À̽º¿¡ ´ëÇØ¼ Áï½Ã¿¡ Àû¿ëµË´Ï´Ù.
µ¥ÀÌŸº£À̽ºÀÇ ÇàÀÇ ³»¿ëÀ» º¸Á¸ÇØ µÎ¾î, ³ªÁß¿¡ »ç¿ëÇÏ´Â °ÍÀº Àß ÈçÈ÷ ÀÖ½À´Ï´Ù. ¿ÀºêÁ§Æ®ÀÇ ³»¿ëÀ», ¿ÀÇÁ ¶óÀÎÀ¸·Î º¸Á¸Çϱ⠽¬¿î Çü½Ä (¿¹¸¦ µé¾î ÆÄÀÏ µî) (À¸)·Î º¯È¯Çϴ ó¸®¸¦ ½Ã¸®¾Æ¶óÀÌÁî ±×·¸´Ù°í ÇÕ´Ï´Ù. Zend_Db_Table_Row_Abstract ÇüÅÂÀÇ ¿ÀºêÁ§Æ®´Â, ½Ã¸®¾Æ¶óÀÌÁ ÇÒ ¼ö ÀÖ½À´Ï´Ù.
PHP ÀÇ serialize()
ÇÔ¼ö¸¦ »ç¿ëÇϰí,
Çà ¿ÀºêÁ§Æ®ÀÇ ¾Æ¸£¹ÙÀÌÆ® ½ºÆ®¸²À» Æ÷ÇÔÇÑ ¹®ÀÚ¿À» ÀÛ¼ºÇÕ´Ï´Ù.
·Ê 10.116. ÇàÀÇ ½Ã¸®¾Æ¶óÀÌÁîÀÇ ¿¹
<?php
$bugs = new Bugs();
$row = $bugs->fetchRow('bug_id = 1');
// ¿ÀºêÁ§Æ®¸¦ ½Ã¸®¾Æ¶óÀÌÁî ÇÕ´Ï´Ù
$serializedRow = serialize($row);
// À̰ÍÀ¸·Î,$serializedRow (À»)¸¦ ÆÄÀÏ µî¿¡ ½á³¾ ¼ö ÀÖ½À´Ï´Ù
</programlisting>
</example>
</sect3>
<sect3 id="zend.db.table.row.serialize.unserializing">
<title>½Ã¸®¾Æ¶óÀÌÁî ÇÑ Çà µ¥ÀÌÅÍÀÇ º¹¿ø</title>
<para>
PHP ÀÇ <code>unserialize()</code> ÇÔ¼ö¸¦ »ç¿ëÇϰí,
¿ÀºêÁ§Æ®ÀÇ ¾Æ¸£¹ÙÀÌÆ® ½ºÆ®¸²À» Æ÷ÇÔÇÑ ¹®ÀÚ¿À» º¹¿øÇÕ´Ï´Ù.
ÀÌ ÇÔ¼ö´Â, ¿ø·¡ÀÇ ¿ÀºêÁ§Æ®¸¦ µ¹·ÁÁÝ´Ï´Ù.
</para>
<para>
µ¹·ÁÁÖ¾îÁø Çà ¿ÀºêÁ§Æ®´Â,
<emphasis>Á¢¼ÓÀÌ Àý´Ü µÇ¾ú´Ù</emphasis> »óÅÂÀÎ °Í¿¡ ÁÖÀÇÇսôÙ.
Çà ¿ÀºêÁ§Æ®³ª ±× ÇÁ·ÓÆÛƼ¸¦ ÀоîµéÀÏ ¼ö ÀÖ½À´Ï´Ù¸¸,
±× °ªÀ» º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù.¶Ç, µ¥ÀÌŸº£À̽º Á¢¼ÓÀ» ÇÊ¿ä·Î ÇÏ´Â ¸Þ¼Òµå
(¿¹¸¦ µé¾î Á¾¼Ó Å×ÀÌºí¿¡ ´ëÇÑ Äõ¸® µî) µµ ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù.
</para>
<example id="zend.db.table.row.serialize.unserializing.example">
<title>½Ã¸®¾Æ¶óÀÌÁî ÇÑ ÇàÀÇ º¹¿øÀÇ ¿¹</title>
<programlisting role="php"><![CDATA[<?php
$rowClone = unserialize($serializedRow);
// À̰ÍÀ¸·Î ¿ÀºêÁ§Æ®ÀÇ ÇÁ·ÓÆÛƼ¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù¸¸, Àбâ Àü¿ëÀÔ´Ï´Ù
echo $rowClone->bug_description;
![]() |
º¹¿øÇÑ ÇàÀº, ¿Ö Àý´Ü µÈ »óÅÂÀԴϱî? |
---|---|
½Ã¸®¾Æ¶óÀÌÁî ÇÑ ¿ÀºêÁ§Æ®´Â, °¡µ¶Çü½ÄÀÇ ¹®ÀÚ¿ÀÌ µË´Ï´Ù. µ¥ÀÌŸº£À̽ºÀÇ ¾îÄ«¿îÆ®³ª ÆÐ½º¿öµå¶ó°í ÇÏ´Â Á¤º¸¸¦ ¾ÏÈ£ÈÇÏÁö ¾Ê°í plaintext¿¡ ½Ã¸®¾Æ¶óÀÌÁî ÇØ º¸Á¸Çϸé, ½ÃÅ¥·¯Æ¼»ó ¹®Á¦°¡ µË´Ï´Ù. ±×·¯ÇÑ µ¥ÀÌÅ͸¦ ¹«¹æºñÀÎ »óÅÂ·Î ÅØ½ºÆ® ÆÄÀÏ¿¡ º¸Á¸Çϰųª ÇÏ°í ½ÍÁö´Â ¾ÊÀ» °ÍÀÔ´Ï´Ù. ¶Ç ¸ÞÀϵ¼ °ø°ÝÀÚ¿¡°Ô µé¿©´Ù ºÁ º¼ ¼ö ÀÖ´Â Àϵµ ÁÁ¾ÆÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. ½Ã¸®¾Æ¶óÀÌÁî µÈ ¿ÀºêÁ§Æ®´Â, ¿Ã¹Ù¸¥ ÀÎÁõ Á¤º¸¸¦ ¸ð¸£´Â ÇÑ µ¥ÀÌŸº£À̽º¿¡ ¾×¼¼½º ÇÒ ¼ö ¾ø½À´Ï´Ù. |
Àý´Ü µÈ ÇàÀÇ Á¢¼ÓÀ» ºÎȰ½ÃŰ·Á¸é ,
setTable()
¸Þ¼Òµå¸¦ »ç¿ëÇÕ´Ï´Ù.ÀÌ ¸Þ¼Òµå¿¡ÀÇ Àμö·Î¼´Â,
Zend_Db_Table_Abstract ÇüÅÂÀÇ ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇØ °Ç³×ÁÝ´Ï´Ù.
Å×ÀÌºí ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇÏ·Á¸é , µ¥ÀÌŸº£À̽º¿ÍÀÇ Á¢¼ÓÀÌ ÇÊ¿äÇÕ´Ï´Ù.
±× Å×À̺í°ú ÇàÀ» °ü·ÃÁþ´Â °ÍÀ¸·Î, ÇàÀÌ µ¥ÀÌŸº£À̽º¿¡ ¾×¼¼½º ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.
±× ÀÌÈÄ´Â, Çà ¿ÀºêÁ§Æ®ÀÇ °ªÀ» º¯°æÇØ µ¥ÀÌŸº£À̽º¿¡ º¸Á¸ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.
·Ê 10.117. ÇàÀÇ ºÎȰÀÇ ¿¹
<?php
$rowClone = unserialize($serializedRow);
$bugs = new Bugs();
// ÀÌ ÇàÀ» Å×ÀÌºí¿¡ ÀçÁ¢¼ÓÇØ,
// µ¥ÀÌŸº£À̽º¿ÍÀÇ Á¢¼ÓÀ» ºÎȰ½Ãŵ´Ï´Ù
$rowClone->setTable($bugs);
// À̰ÍÀ¸·Î, ÇàÀÇ ³»¿ëÀ» º¯°æÇØ º¸Á¸ÇÒ ¼ö ÀÖ½À´Ï´Ù
$rowClone->bug_status = 'FIXED';
$rowClone->save();
Zend_Db_Table_Row (Àº)´Â,Zend_Db_Table_Row_Abstract
(À»)¸¦ °è½ÂÇÑ µðÆúÆ®ÀÇ ±¸»ó Ŭ·¡½ºÀÔ´Ï´Ù.ÀÌ¿ÜÀÇ ±¸»ó Ŭ·¡½º¸¦ »õ·Ó°Ô ÀÛ¼ºÇØ,
±×°ÍÀ» ÀÌ¿ëÇØ ÇàÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
µ¶ÀÚÀûÀÎ Çà Ŭ·¡½º¸¦ ÁöÁ¤ÇÏ·Á¸é , Å×À̺í Ŭ·¡½ºÀÇ protected
¸â¹öÀÌ´Ù $_rowClass
(À»)¸¦ »ç¿ëÇÏ´ÂÁö,
Å×ÀÌºí ¿ÀºêÁ§Æ®ÀÇ constructor¡¡ ¡¡ ÀÇ ÀμöÀÇ ¹è¿·Î ÁöÁ¤ÇÕ´Ï´Ù.
·Ê 10.118. µ¶ÀÚÀûÀÎ Çà Ŭ·¡½ºÀÇ ÁöÁ¤
<?php
class MyRow extends Zend_Db_Table_Row_Abstract
{
// ...µ¶ÀÚÀûÀΠó¸®
}
// µ¶ÀÚÀûÀÎ ÇàÀ», Å×À̺í Ŭ·¡½ºÀÇ ÀüÀνºÅϽº·Î
// µðÆúÆ®·Î¼ »ç¿ëÇϵµ·Ï(µíÀÌ) ¼³Á¤ÇÕ´Ï´Ù
class Products extends Zend_Db_Table_Abstract
{
protected $_name = 'products';
protected $_rowClass = 'MyRow';
}
// ȤÀº, Å×À̺í Ŭ·¡½ºÀÇ Æ¯Á¤ÀÇ ÀνºÅϽº¿¡¼¸¸
// µ¶ÀÚÀûÀÎ Çà Ŭ·¡½º¸¦ »ç¿ëÇϵµ·Ï(µíÀÌ) ¼³Á¤ÇÕ´Ï´Ù
$bugs = new Bugs(array('rowClass' => 'MyRow'));
ÇàÀ» ÀÛ¼ºÇÒ ¶§¿¡ ¾îÇø®ÄÉÀÌ¼Ç °íÀ¯ÀÇ ³í¸®¸¦ ÃʱâÈÇÏ°í ½ÍÀº °æ¿ì´Â,
±× ÀÛ¾÷À» init()
¸Þ¼Òµå·Î À̵¿ÇÕ´Ï´Ù.
ÀÌ ¸Þ¼Òµå´Â, ÇàÀÇ ¸ÞŸµ¥ÀÌŸÀÇ Ã³¸®°¡ ¸ðµÎ ³¡³ ÈÄ¿¡ ÄÝ µË´Ï´Ù.
¸ÞŸµ¥ÀÌŸ¸¦ º¯°æÇÒ »ý°¢ÀÌ ¾ø´Ù¸é,
__construct
¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â °Íº¸´Ùµµ ÀÌÂÊÀÇ ÆíÀ» Ãßõ ÇÕ´Ï´Ù.
·Ê 10.119. init() ¸Þ¼ÒµåÀÇ »ç¿ë¿¹
<?php
class MyApplicationRow extends Zend_Db_Table_Row_Abstract
{
protected $_role;
protected function init()
{
$this->_role = new MyRoleClass();
}
}
Çà Ŭ·¡½º´Â,INSERT
(ÀÌ)³ª UPDATE
,
DELETE
ÀÇ Á¶ÀÛ Àü¿¡, ´ëÀÀÇÑ´Ù protected ¸Þ¼Òµå
_insert()
,_update()
¹× _delete()
(À»)¸¦ ÄÝ ÇÕ´Ï´Ù.
Çà Ŭ·¡½ºÀÇ ¼ºê Ŭ·¡½º¿¡¼, ÀÌ·¯ÇÑ ¸Þ¼Òµå¿¡ µ¶ÀÚ ³í¸®¸¦ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ƯÁ¤ÀÇ Å×ÀÌºí¿¡ ´ëÇØ¼ µ¶ÀÚÀûÀÎ ³í¸®¸¦ ÇÊ¿ä·Î ÇØ,
±×°ÍÀÌ ±× Å×À̺í»óÀÇ ¸ðµç Á¶ÀÛ¿¡ ´ëÇØ¼ ¹ß»ýÇÑ´Ù¸é,
±× 󸮴 Å×À̺í Ŭ·¡½ºÀÇ
insert()
,update()
¹×
delete()
±×¸®°í ½ÇÀåÇÏ´Â ÆíÀÌ ÁÁÀ» °ÍÀÔ´Ï´Ù.
±×·¯³ª, µ¶ÀÚÀûÀÎ ³í¸®¸¦ Çà Ŭ·¡½º¿¡¼ ½ÇÀåÇÏ´Â ÆíÀÌ ÁÁÀº °æ¿ìµµ ÀÖ½À´Ï´Ù.
µ¶ÀÚ ³í¸®ÀÇ ½ÇÀåÀ» Å×À̺í Ŭ·¡½ºº¸´Ù Çà Ŭ·¡½º¿¡¼ ½Ç½ÃÇÏ´Â ÆíÀÌ ÁÁÀº ¿¹¸¦, ÀÌÇÏ¿¡ ¸î°³Àΰ¡ ³ªÅ¸³» º¸ÀÔ´Ï´Ù.
·Ê 10.120. Çà Ŭ·¡½º¿¡¼ÀÇ µ¶ÀÚ ³í¸®ÀÇ ¿¹
µ¶ÀÚ ³í¸®°¡, ±× Å×À̺íÀÇ ¸ðµç Á¶ÀÛ¿¡ Àû¿ëµÈ´Ù°í´Â ÇÒ ¼ö ¾ø½À´Ï´Ù. »óȲ¿¡ µû¶ó µ¶ÀÚ ³í¸®¸¦ Àû¿ëÇÏ·Á¸é , ±× ³í¸®¸¦ Çà Ŭ·¡½º¿¡¼ ½ÇÀåÇØ, ±× Çà Ŭ·¡½º¸¦ ÁöÁ¤ÇØ Å×À̺í Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ÀÛ¼ºÇÕ´Ï´Ù. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é, Å×À̺í Ŭ·¡½º´Â µðÆúÆ®ÀÇ Çà Ŭ·¡½º¸¦ »ç¿ëÇÕ´Ï´Ù.
ÀÌ Å×ÀÌºí¿¡¼´Â, µ¥ÀÌÅÍ¿¡ ´ëÇÑ Á¶ÀÛ ³»¿ëÀ» Zend_Log ¿ÀºêÁ§Æ®¿¡ ±â·ÏÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ´Ù¸¸, ±×°ÍÀº ¾îÇø®ÄÉÀ̼ÇÀÇ ¼³Á¤À¸·Î ·Î±× ±â·ÏÀ» À¯È¿ÇÏ°Ô Çϰí ÀÖ´Â °æ¿ì¸¸À¸·Î ÇÕ´Ï´Ù.
<?php
class MyLoggingRow extends Zend_Db_Table_Row_Abstract
{
protected function _insert()
{
$log = Zend_Registry::get('database_log');
$log->info(Zend_Debug::dump($this->_data, "INSERT: $this->_tableClass", false));
}
}
// $loggingEnabled (Àº)´Â »ùÇ÷μ »ç¿ëÇÏ´Â ÇÁ·ÓÆÛƼ·Î,
// À̰ÍÀº ¾îÇø®ÄÉÀ̼ÇÀÇ ¼³Á¤¿¡ ÀÇÇØ¼ Á¤ÇØÁö´Â °ÍÀ¸·Î ÇÕ´Ï´Ù
if ($loggingEnabled) {
$bugs = new Bugs(array('rowClass' => 'MyLoggingRow'));
} else {
$bugs = new Bugs();
}
·Ê 10.121. »ðÀÔÇÏ´Â µ¥ÀÌÅÍÀÇ ±â·ÏÀ» º¹¼öÀÇ Å×À̺í·Î ½Ç½ÃÇÏ´Â Çà Ŭ·¡½ºÀÇ ¿¹
º¹¼öÀÇ Å×À̺í·Î, °øÅëÀÇ µ¶ÀÚ ³í¸®¸¦ »ç¿ëÇϱ⵵ ÇϰÚÁö¿ä. °°Àº ³í¸®¸¦ ¸ðµç Å×À̺í Ŭ·¡½º¿¡¼ ½ÇÀåÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ±× °æ¿ì´Â ±× µ¿ÀÛÀ» Çà Ŭ·¡½º¿¡¼ Á¤ÀÇÇսôÙ. ±×¸®°í °¢ Å×À̺í·Î ±× Çà Ŭ·¡½º¸¦ »ç¿ëÇÕ´Ï´Ù.
ÀÌ ¿¹¿¡¼´Â, ·Î±× ±â·Ï¿ëÀÇ ÄÚµå´Â ÀüÅ×À̺í Ŭ·¡½º¿¡¼ µ¿ÀÏÇÕ´Ï´Ù.
<?php
class MyLoggingRow extends Zend_Db_Table_Row_Abstract
{
protected function _insert()
{
$log = Zend_Registry::get('database_log');
$log->info(Zend_Debug::dump($this->_data, "INSERT: $this->_tableClass", false));
}
}
class Bugs extends Zend_Db_Table_Abstract
{
protected $_name = 'bugs';
protected $_rowClass = 'MyLoggingRow';
}
class Products extends Zend_Db_Table_Abstract
{
protected $_name = 'products';
protected $_rowClass = 'MyLoggingRow';
}
Å×À̺íÀÇ Å¬·¡½º¸íÀ» RDBMS ÀÇ Å×À̺í¸íÀ¸·Î ´ë¸é½Ã۱â À§Çؼ, inflection (º¯Çü) (À¸)·Î ºÒ¸®´Â ¹®ÀÚ¿ º¯È¯À» »ç¿ëÇÏ´Â °ÍÀ» ÁÁ¾ÆÇÏ´Â ºÐµµ ÀÖ½À´Ï´Ù.
Zend_Db Ŭ·¡½º±ºÀº, µðÆúÆ®¿¡¼´Â º¯ÇüÀ» ¼Æ÷Æ®Çϰí ÀÖÁö ¾Ê½À´Ï´Ù. ÀÌ ¹æÄ§¿¡ ´ëÇØ¼´Â Ç×10.5.12.4. ¡¸Zend_Db_Table ¿¡ ÀÖ¾î¼ÀÇ ¾î¹Ì º¯ÈÀÇ Á¤ÀÇ¡¹ ±×¸®°í ¼³¸íÇϰí ÀÖ½À´Ï´Ù.
º¯ÇüÀ» ½ÃŰ°í ½ÍÀº °æ¿ì´Â, º¯È¯ 󸮸¦ Àڱ⠺δãÀ¸·Î ½ÇÀåÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.±×·¯±â À§Çؼ´Â,
µ¶ÀÚÀûÀÎ Çà Ŭ·¡½º¿¡¼ _transformColumn()
¸Þ¼Òµå¸¦ ¿À¹ö¶óÀ̵å(override) ÇØ,
Å×À̺í Ŭ·¡½º¿¡¼ Äõ¸®¸¦ ½ÇÇàÇÒ ¶§¿¡ ±× µ¶ÀÚÇà Ŭ·¡½º¸¦ »ç¿ëÇÕ´Ï´Ù.
·Ê 10.122. º¯È¯ ó¸®ÀÇ Á¤ÀÇ¿¹
À̰Ϳ¡ ÀÇÇØ, Ä÷³¸íÀ» º¯Çü½ÃŲ °ÍÀ¸·Î ¾×¼¼½º ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù.
Çà Ŭ·¡½ºÀÇ _transformColumn()
¸Þ¼Òµå¸¦ »ç¿ëÇϰí, µ¥ÀÌŸº£À̽ºÀÇ Å×ÀÌºí³»ÀÇ Ä÷³¸íÀ» º¯°æÇϰí ÀÖ½À´Ï´Ù.
<?php
class MyInflectedRow extends Zend_Db_Table_Row_Abstract
{
protected function _transformColumn($columnName)
{
$nativeColumnName = myCustomInflector($columnName);
return $nativeColumnName;
}
}
class Bugs extends Zend_Db_Table_Abstract
{
protected $_name = 'bugs';
protected $_rowClass = 'MyInflectedRow';
}
$bugs = new Bugs();
$row = $bugs->fetchNew();
// ļ¸á ÄÉÀ̽º Çü½ÄÀÇ Ä÷³¸íÀ» »ç¿ëÇÕ´Ï´Ù.
// º¯È¯ ÇÔ¼ö¿¡ ÀÇÇØ, À̰ÍÀ» µ¥ÀÌŸº£À̽º³»¿¡¼ÀÇ ½ÇÁ¦ÀÇ Çü½Ä¿¡
// º¯È¯ÇÕ´Ï´Ù.
$row->bugDescription = 'New description';
º¯È¯ ÇÔ¼ö¸¦ ¾²´Â °ÍÀº ´ç½ÅÀÇ ¿ªÇÒÀÔ´Ï´Ù. Zend Framework ±×·³, ±×·¯ÇÑ ÇÔ¼ö´Â ÁغñÇØ ÀÖÁö ¾Ê½À´Ï´Ù.