| |
|
|
III. EFFICIENT (2)
12. ÇÔ¼ö
ÅÛÇø´Ç¥Çö½Ä ³»¿¡ PHP ÇÔ¼ö¸¦ PHP ¹®¹ý´ë·Î ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ü, ÇÔ¼ö¸¦ »ç¿ëÇÒ ¶§´Â Ãâ·Â¸í·É¾î(=)¸¦ »ý·«ÇÒ ¼ö ¾ø½À´Ï´Ù.
{= date('Y-m-d h:i:s', timestamp) }
{= number_format(user.money) }
{= str_repeat( preg_replace('/\d+/', '', user.info), 10 ) }
{? empty(_COOKIE) || click=='first' || userFunc(arg) } hello {/}
¡Ø ÇÔ¼ö Ç÷¯±×ÀÎ
»ç¿ëÀÚÁ¤ÀÇ ÇÔ¼ö¸¦ ¹èÆ÷µÈ Ç÷¯±×ÀÎ µð·ºÅ丮³»¿¡ 'function.ÇÔ¼öÀ̸§.php' ·Î ÀúÀ常 Çϸé, º°µµ·Î ÀÎŬ·çµåÇÒ ÇÊ¿ä¾øÀÌ ÅÛÇø´ ÆÄÀÏ ³»¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
| function.returnHello.php |
<?php
function returnHello($user) {
return 'hello '.$user;
}
?>
|
| index.php |
...
$tpl->assign('user', 'Julia');
...
|
| index.tpl |
<div>
{= returnHello(user) }
</div>
|
| >>output |
<div>
Hello Julia
</div>
|
°°Àº À̸§ÀÇ ÇÔ¼ö°¡ ¿©·¯ ÇÏÀ§ÅÛÇø´¿¡ »ç¿ëµÇ°Å³ª, ¶Ç´Â PHP ÆÄÀÏ¿¡¼ »ç¿ëµÉ °æ¿ì¿¡µµ ¿¡·¯¾øÀÌ ÇÊ¿äÇÑ ¸¸Å¸¸ Á¤È®ÇÏ°Ô ÀÚµ¿ÀÎŬ·çµåµË´Ï´Ù.
½ÇÇà ÆÄÀÏ¿¡¼ ÅÛÇø´¿ë »ç¿ëÀÚÁ¤ÀÇ ÇÔ¼ö¸¦ ¹Ì¸® ÀÎŬ·çµåÇØ¼ »ç¿ëÇϰíÀÚ ÇÑ´Ù¸é, °£´ÜÈ÷ include_() ¸Þ¼µå¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
$tpl->include_('returnHello');
$tpl->include_('returnHello', 'someUserFunc');
13. »ó¼ö
| Çü(type) ÁöÁ¤ÀÚ (¿¹¾à¾î) |
ÀÇ¹Ì |
»ç¿ë¹ý |
| c. (¶Ç´Â C.) |
µÚÀÇ ºÙÀº ¾ÆÀ̵𰡠»ó¼öÀÓ |
{ c.CONSTANT } |
PHP ¿¡ ³»ÀåµÈ »ó¼ö ¶Ç´Â define() ÇÔ¼ö¿¡ ÀÇÇÑ »ç¿ëÀÚÁ¤ÀÇ »ó¼ö¸¦ º°µµÀÇ ÇÒ´ç¾øÀÌ ÅÛÇø´³»¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
{ C.SOME_USER_CONSTANT }
{= htmlspecialchars( list.data.title, C.ENT_QUOTES ) }
{? userFunc(user.name, true) == false } some message {/}
true , false , null Àº »ó¼ö°¡ ¾Æ´Ñ ¿¹¾à¾îÀ̰í, C. ¸¦ ºÙÀÌÁö ¾Ê°í »ç¿ë°¡´ÉÇÕ´Ï´Ù.
14. °´Ã¼
| ¿¬»êÀÚ |
»ç¿ë¹ý |
| -> |
{ object->method() }, { object->property } |
°´Ã¼ ¶ÇÇÑ Ç¥Çö½ÄÀÇ ±¸¼º¿ä¼Ò·Î ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
{ user->getLevel() }
{= strftime('%Y-%m-%d', env.data->timestamp) }
| °´Ã¼ »ç¿ë ¿¹Á¦ |
| index.php |
<?php
class PHP_CLASS {
var $user = 'guest';
function hello() {
return 'hello! ' . $this->user;
}
}
$phpobj = new PHP_CLASS;
$phpobj->user = 'julia';
include 'Template_.class.php';
$tpl = new Template_;
$tpl->define('index', 'index.tpl');
$tpl->assign('tplobj', $phpobj);
$tpl->print_('index');
?>
|
| index.tpl |
|
<div> { tplobj->user } </div><div> { tplobj->hello() } </div>
|
| >> output |
|
<div> julia </div><div> hello! juila </div>
|
´Ù¸¥ ÅÛÇø´º¯¼öó·³, °´Ã¼µµ Àü¿ªº¯¼ö¶ó¸é ¾ð´õ¹Ù¸¦ ºÙ¿©¼ ÇÒ´çÀ» »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù.
* ÅÛÇø´ ÆÄÀϳ»ÀÇ this ´Â ÅÛÇø´ °´Ã¼¸¦ ÂüÁ¶ÇÕ´Ï´Ù.
{ this->template_dir }
{= userFunc(this, arg1, arg2) }
¡Ø °´Ã¼ Ç÷¯±×ÀÎ
| Çü(type) ÁöÁ¤ÀÚ |
ÀÇ¹Ì |
»ç¿ë¹ý |
| p. (¶Ç´Â P.) |
µÚÀÇ ºÙÀº ¾ÆÀ̵𰡠Ç÷¯±×ÀÎ °´Ã¼ÀÓ |
{ p.object } |
Ŭ·¡½º À̸§ÀÌ "tpl_object_°´Ã¼¸í" ÀΠŬ·¡½º¸¦ Ç÷¯±×ÀÎ µð·ºÅ丮³»¿¡ 'object.°´Ã¼¸í.php' ÆÄÀÏ·Î ÀúÀ常 Çϸé, º°µµ·Î ÀÎŬ·çµå³ª ÃʱâÈ ¾øÀÌ ÅÛÇø´ ÆÄÀÏ ³»¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
| object.say.php |
<?php
class tpl_object_say {
function tpl_object_say($user='guest') {
$this->user= $user;
}
function hello() {
return 'Hello! '.$this->user;
}
}
?>
|
| index.tpl |
|
<div> {p.say->hello()} </div>
|
| >>output |
|
<div> Hello! guest </div>
|
PHP ÆÄÀÏ¿¡¼ ¹Ì¸® ÀÎŬ·çµåÇÏ¿© »ç¿ëÇϰųª, »ý¼ºÀÚÇÔ¼ö¿¡ ÀÎÀÚ¸¦ Àü´ÞÇÏ¿© ÃʱâÈÇÏ·Á¸é, new_() ¸Þ¼µå¸¦ »ç¿ëÇÕ´Ï´Ù.
| ¸Þ¼µå |
ÀÇ¹Ì |
»ç¿ë¹ý |
| new_() |
Ç÷¯±×ÀÎ °´Ã¼ ÃʱâÈ/¸®ÅÏ |
$tpl->new_('°´Ã¼¸í', ÀÎÀÚ1, ÀÎÀÚ2,..) |
| index.php |
<?php
include 'Template_.class.php';
$tpl = new Template_;
$tpl->define('index', 'index.tpl');
$tpl->new_('say', 'julia');
$tpl->print_('index');
?>
|
| index.tpl |
|
<div> {p.say->hello()} </div>
|
| >>output |
|
<div> Hello! julia </div>
|
¾Æ·¡¿Í °°ÀÌ ÃʱâÈ ÇÑ´Ù¸é. $obj °´Ã¼¿Í ÅÛÇø´ÆÄÀϳ»ÀÇ say °´Ã¼´Â µ¿ÀÏÇÑ °ÍÀÔ´Ï´Ù.
$obj = &$tpl->new_('say' ...);
Note:
PHP4 ¿¡¼´Â &¸¦ ºÙÀÏ °æ¿ì ÅÛÇø´ ³»¿¡¼ »ç¿ëµÉ °´Ã¼ÀÇ ÂüÁ¶¸¦ ¸®ÅÏÇϰí, ºÙÀÌÁö ¾ÊÀº °æ¿ì º¹»çº»À» ¸®ÅÏÇÕ´Ï´Ù. PHP5 ¿¡¼´Â ¾î¶² °æ¿ì¿¡³ª ÂüÁ¶¸¦ ¸®ÅÏÇÕ´Ï´Ù.
15. ºÐ±â(2) - switch
ºÐ±â¸í·É¾î(?) µÚ¿¡ ÇÑ °³ ÀÌ»óÀÇ case ¸í·É¾î (:) °¡ ÀÖÀ¸¸é switch ºÐ±â·Î ÇØ¼®µË´Ï´Ù.
| ¸í·É¾î |
ÀÇ¹Ì |
»ç¿ë¹ý |
| ? [:] |
switch |
{? test_expression : label_expression ... } |
| : |
case, default (¿É¼Ç) |
{: label_expression ...}, {:} |
| / |
endswitch |
{/} |
¸í·É¾îµéÀº if ºÐ±â¹®, ·çÇÁ¹®°ú °øÅëµÇÁö¸¸ ¹®¸Æ¿¡ ÀÇÇØ ÇØ¼®µÇ°í, ´Ù¸¥ ±¸¹®µé°ú ÀÚÀ¯·Ó°Ô ÁßÃ¸ÇØ¼ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç, Á¤È®ÇÏ°Ô ÀÛ¼ºÇÏÁö ¾ÊÀ¸¸é ÅÛÇø´ º¯È¯±â°¡ ÀûÀýÇÑ ¿À·ù¸Þ¼¼Áö¸¦ Ãâ·ÂÇÕ´Ï´Ù.
| PHP's switch |
Template_'s switch |
<?php
switch ($fruit) {
case 'banana':
echo 'yellow';
break;
case 'apple':
case 'strawberry':
echo 'red';
break;
case $var :
echo "color of ".$var;
break;
default :
echo 'unknown';
}
?>
|
<!--{? _fruit :'banana'}-->
yellow
<!--{:'apple' :'strawberry'}-->
red
<!--{: _var}-->
color of {_var}
<!--{:}-->
unknown
<!--{/}-->
|
ÅÛÇø´ÅÂ±× ´ÜÀ§·Î break;°¡ ÀÚµ¿À¸·Î ºÙ½À´Ï´Ù. À̰ÍÀº ±â´É»óÀÇ Á¦¾àÀÌ ÀÖÁö¸¸, ÇÑ ÅÛÇø´ÅÂ±× ³»¿¡ case ¸í·É(:)À» ¿©·¯ ¹ø »ç¿ëÇÒ ¼ö ÀÖÀ¸¹Ç·Î, ¿©·¯ Á¶°Ç¿¡ ´ëÇÑ ÇÑ °¡Áö Ãâ·ÂÀÌ °¡´ÉÇÕ´Ï´Ù.
16. ·çÇÁ(3) - Ç¥Çö½Ä
¾Æ·¡¿Í °°ÀÌ ·çÇÁ¸í·É¾î µÚ¿¡ ·çÇÁ¾ÆÀ̵ð ´ë½Å Ç¥Çö½ÄÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
{@ P.myObj->getList() }
{@ range(1, list.estimation) }
Ç¥Çö½ÄÀº ·çÇÁ(1), ·çÇÁ(2) ¿¡¼ ¼³¸íµÇ¾ú´ø ¹è¿À» ¸®ÅÏÇÏ¸é µË´Ï´Ù. ·çÇÁ¾ÆÀ̵𰡠¾ø±â ¶§¹®¿¡ ÇØ´ç·çÇÁÀÇ º¯¼ö´Â ·çÇÁ¾ÆÀ̵𸦠»ý·«ÇÏ´Â ÇüŸ¸ °¡´ÉÇÏ°í ·çÇÁ¹Û¿¡¼ÀÇ size_ »ç¿ëÀº °¡´ÉÇÏÁö ¾Ê½À´Ï´Ù.
¾Æ·¡ ¼¼ °¡Áö Áßø·çÇÁ´Â ¸ðµÎ °°½À´Ï´Ù.
{@ outer } {@ inner } {inner.var} {/} {/}
{@ outer } {@ .inner } {..var} {/} {/}
{@ outer } {@ outer.inner } {..var} {/} {/}
ù¹øÂ° inner ´Â ·çÇÁ¾ÆÀ̵ðÀ̰í, .inner ¿Í outer.inner ´Â Ç¥Çö½ÄÀÔ´Ï´Ù.
| ¡Ø key_ , value_ ¸¦ ÀÌ¿ëÇÑ Áßø·çÇÁ ¿¹Á¦ |
| function.getSomeList.php |
<?php
function getSomeList() {
...
$result = mysql_query('select group, item from some_table');
$loop = array();
while ($data = mysql_fetch_assoc($result)) {
$loop[$data['group']][] = $data['item'];
}
return $loop;
}
?>
|
| index.tpl |
<table>
<!--{@ getSomeList()}-->
<tr><td>{.key_}</td><td>{@.value_}{..value_}, {/}</td></tr>
<!--{/}-->
</table>
|
| >>output |
<table>
<tr><td>fruit</td><td>apple, orange, pear,</td></tr>
<tr><td>sport</td><td>running, pingpong,</td></tr>
<tr><td>number</td><td>5, 100, 3, 65,</td></tr>
</table>
|
| getSomeList() ÇÔ¼ö°¡ ¸®ÅÏÇÑ ¹è¿Àº ´ÙÀ½°ú °°½À´Ï´Ù. |
| Array returned |
array(
'fruit' => array('apple', 'orange', 'pear'),
'sport' => array('runging', 'pingpong'),
'number'=> array(5, 100, 3, 65),
);
|
17. PHP ÄÚµù
ÅÛÇø´ ÆÄÀÏ ³»¿¡¼ PHP Äڵ带 »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç, PHP ÄÚµå ³»¿¡¼ ÅÛÇø´ º¯¼ö¸¦ »ç¿ëÇϰųª, ÅÛÇø´ º¯¼ö¿¡ °ªÀ» ÇÒ´çÇÒ ¼ö ÀÖ½À´Ï´Ù.
| index.tpl |
<?php {var} = 123; ?>
<div>{var}</div>
|
| >>output |
|
<div>123</div>
|
php.ini ÆÄÀÏÀÇ ¼³Á¤¿¡ µû¶ó PHP ű׷Π<? ?> ¶Ç´Â <% %> µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
Note:
À̰ÍÀº ±ÇÀåµÇ´Â ±â´ÉÀÌ ¾Æ´Ï¸ç, ÇÊ¿äÇÏ´Ù¸é °£´ÜÇÑ ¿ëµµ·Î¸¸ »ç¿ëÇϽñ⠹ٶø´Ï´Ù. PHP ÄÚµåÀÇ ¿À·ù¿¡ ´ëÇØ¼´Â, ÅÛÇø´º¯È¯±â°¡ ÀÚüÀûÀÎ µð¹ö±ë ¸Þ¼¼Áö¸¦ Ãâ·ÂÇÏÁö ¸øÇÕ´Ï´Ù.
|
|