Class
- Tip&Tech
Àüü´ñ±Û¼ö 14
-


¼ÛÈ¿Áø 09-08-18 20:40
¼Ò½ºº¸±â
-
ÀÎÀÚ ¼ö°¡ °¡º¯À̶ó´Â °Ç°¡¿ä?
±×·¯¸é ÀÎÀÚ¸¦ °´Ã¼·Î ³Ñ±â¸é ¾î¶³±î¿ä?
$args = (object)null;
$args->userid = 'shimbird';
$args->email = 'asdf@cddd.com';;
$args->display = true;
¾Æ¿¹ Ŭ·¡½ºÈ ½ÃÄѼ default °ªÀ» Áְųª validating ±îÁö ÇÒ ¼öµµ ÀÖ°Ú°í¿ä.
-


MC½É»õ 09-08-18 22:22
¼Ò½ºº¸±â
-
À½. ¿ª½Ã Àü´ÞÀÌ Àß ¾È µÇ´Â±º¿ä. ±Û»¡ÀÌ ¿ö³« ºÎÁ·ÇÏ´Ù º¸´Ï.. ^^;;
classA{
function __construct()
}
classB{
function __construct($id)
}
classC{
function __construct($id, $key)
}
classD{
function __construct($id, $key, $params)
}
¶ó´Â Ŭ·¡½º°¡ ¿©·¯°³ ÀÖ°í, ¾Æ·¡¿Í °°ÀÌ ½Ì±ÛÅæÀ» »ç¿ëÇÏ·Á´Â °æ¿ì
Singleton::getInstance('classB', $id);
Singleton::getInstance($className){
$instance = new $className();
}
Çü½ÄÀ¸·Î ±¸ÇöÇÏ´Â °æ¿ì classA¸¸ ÀÌ»ó ¾ø°í ³ª¸ÓÁö´Â ¿À·ù ¸Þ½ÃÁö°¡ ¶ß¸é¼ ÀνºÅϽº°¡ »ý¼ºµÇÁö ¾ÊÁÒ.
classB, C, D¿¡¼´Â argument°¡ Çʼö·Î ÀÖ¾î¾ß Çϴϱî¿ä.
»ý¼ºÀÚ¿¡ °ªÀ» Àü´ÞÇØ¼ Á¤»óÀûÀ¸·Î ÀνºÅϽº¸¦ ¸¸µé±â À§ÇÔÀÔ´Ï´Ù.
¼³¸íÀÌ ÀÌ»óÇØ¼ À̰͵µ Àü´ÞÀÌ Àß ¾È µÉµí. ¤Ð,.¤Ð
javascriptÀÇ apply¿Í ºñ½ÁÇÑ ¿ëµµÀÔ´Ï´Ù.
-


±×³× 09-08-18 22:59
¼Ò½ºº¸±â
-
ReflectionClass °¡ Á¤´ä ¸Â½À´Ï´Ù.
$args ´Â ¹è¿À̾î¾ß Çϰí¿ä ÀÎÀÚ ¼ø¼´ë·Î µé¾î°¡¾ß ÇÒ°Ì´Ï´Ù.
¶ÇÇÑ
»ý¼ºÀÚ°¡ ¾øÀ» °æ¿ì´Â
$class = $reflector->newInstance ();
ÇÏ½É µË´Ï´Ù.
»ý¼ºÀÚ°¡ ÀÖ´À³Ä ¾ø´À³Ä¸¦ äũÇÑÈÄ µÎ°¡Áö¸¦ »óȲ¿¡ ¸Â°Ô ¾²½É µË´Ï´Ù.
¾Æ¸¶
¸Þ¼µå È®ÀÎÇϴ°Ô
$reflector->hasMethod('methodname'); ÇüÅ Àϰ̴ϴÙ.
-


Áö³ª°¡´ÂÀÚ 09-08-18 23:37
¼Ò½ºº¸±â
-
³íÁ¡À» Á» ¹þ¾î³ À̾߱â¶ó Á˼ÛÇÕ´Ï´Ù.
singletonÀÌ ÈçÇÏ°Ô ¹ß»ýÇÏ´Â °æ¿ì´Â ¾Æ´Ñµí Çϰí
²À ÇÊ¿äÇÏ´Ù¸é
classA{
public function __construct() {}
public static function getInstance() {}
}
ÇüÅÂ·Î ÇØ´ç Ŭ·¡½º¿¡¼
classA::getInstance();
·Î Á¢±ÙÇϴ°ÍÀÌ ÁÁÁö ¾Ê³ª »ý°¢ÇÕ´Ï´Ù.
²Ù»¶ -


¼ÛÈ¿Áø 09-08-18 23:45
¼Ò½ºº¸±â
-
´©°¡ ¸¸µç Ŭ·¡½º°Ç »ó°ü¾øÀÌ ½Ì±ÛÅÏÀ¸·Î ¾²±â À§ÇÑ Å¬·¡½ºÀεí ÇÕ´Ï´Ù.
±×·¯°íº¸´Ï ÀÎÀÚ°¡ µé¾î°¡¸é ±× ÀÎÀÚ±îÁö °í·ÁÇØ¼ ½Ì±ÛÅÏ º¯¼ö¸¦ °ü¸®ÇØ¾ß °Ú³×¿ä.
È¿À²ÀÌ ¸¹ÀÌ ¶³¾îÁö´Â °Í °°Àºµ¥...
-

³¶¸Á¹é¼ö 09-08-19 00:18
¼Ò½ºº¸±â
-
Á¤¸» ½áº¸°í ½ÍÀº ¸¶À½Àº ±¼¶ÒÀε¥. ¤»¤»
Àб⸸ ÇØµµ °¨»çÇϳ׿ä. ÀÌ·±°Å °°ÀÌ °í¹ÎÇÒ ÇüÆíÀÌ »¡¸® µÇ¾ßÇÒÅÙµ¥.
²Ù¹÷~!
-


Áö³ª°¡´ÂÀÚ 09-08-19 01:46
¼Ò½ºº¸±â
-
°Á¦Çϴ°ÍÀº ¾Æ´ÒÅ×°í °¢ÀÚÀÇ ÇØ¼®ÀÌ ´Ù¸¦¼ö ÀÖ°Ú½À´Ï´Ù¸¸
GoFÀÇ µðÀÚÀÎ ÆÐÅÏ Ã¥Áß ½Ì±ÛÅæ ÆÐÅÏ °ü·Ã ¼½¼Ç?¿¡
ÀÚ½ÅÀÇ À¯ÀÏÇÑ ÀνºÅϽº¿¡ Á¢±ÙÇÏ´Â ¹æ¹ýÀ»
Ŭ·¡½º ÀÚüÀûÀ¸·Î °ü¸®ÇÏ°Ô ÇÑ´Ù´Â ºÎºÐÀÌ ÀÖ½À´Ï´Ù.
±× ÀÌÁ¡ÀÇ ¹üÀ§¸¦ ³ÐÈ÷°íÀÚ ÇÏ´Â Àǵµ´Â ÀÛ¼ºÀÚ²²¼ ¹àÈ÷¼ÌÀ¸³ª
Zend Framework ³»ºÎ¿¡¼µµ À¯ÀϼºÀÌ º¸ÀåµÇ¾î¾ßÇÒ Å¬·¡½º¿¡¼´Â
ÀÚü singleton Á¢±Ù¹ý(Zend_XXX::getInstance())À» Á¦½ÃÇϰí ÀÖ½À´Ï´Ù.
Zend_Registry, Zend_Controller, Zend_Auth µîµî...
°ü·Ã ¸Þ¼Òµå°¡ Á¸ÀçÇÏÁö ¾ÊÀ»°æ¿ì ºÎµæÀÌÇϰÔ
class My_ClassA extends Zend_ClassA
{
public static function getInstance($id,$key) {
if (null === self::$_instance) {
self::$_instance = new self($id, $key);
}
return self::$_instance;
}
}
$a= My_ClassA::getInstance($id, $key);
Á¤µµ·Î °¢°¢ È®ÀåÇØº¸´Â°Íµµ ±¦ÂúÀ»µí Çϰí...
´ÜÇѹø ÀνºÅϽº µÇ¾î¾ß ÇÑ´Ù¸é
¿ª½Ã ¸í½ÃÀûÀ¸·Î °ü¸®µÇ¾î¾ß ÇÏÁö ¾ÊÀ»±î ÇØ¼ µå¸°¸»¾¸ÀÔ´Ï´Ù.
²À ÇÊ¿äÇÏ´Ù¸é
class Zend_ClassA {
function __construct($id) {
echo '<pre>';
print_r(func_get_args());
echo '</pre>';
}
}
class Zend_ClassB {
function __construct($id, $key) {
echo '<pre>';
print_r(func_get_args());
echo '</pre>';
}
}
class singleton {
private static $instances = array();
public static function getInstance() {
$params = func_get_args();
$params_md5 = md5(serialize($params));
$class_name = array_shift($params);
/* ¾Ë·ÁÁֽŠReflectionClass ´öºÐ¿¡ »èÁ¦
$paramstr = '';
foreach ($params as $i => $param){
$paramstr.= ($i > 0 ? ', ' : '').'$params['.$i.']';
}
*/
if(array_key_exists($params_md5, self::$instances)) {
echo 'same';
} else {
$reflector = new ReflectionClass($class_name);
self::$instances[$params_md5] = $reflector->newInstanceArgs($params);
//self::$instances[$params_md5] = eval("new ".$class_name."(".$paramstr.");");// ¿ª½Ã»èÁ¦
}
return self::$instances[$params_md5];
}
}
singleton::getInstance('Zend_ClassA', 'a');
singleton::getInstance('Zend_ClassB', 'a','b');
singleton::getInstance('Zend_ClassB', 'a',array(0,1,2));
singleton::getInstance('Zend_ClassB', 'a','b');
ÀÌ¿Í À¯»çÇÑ Äڵ尡 ³ª¿Ã¼ö¹Û¿¡ ¾øÀ»Å×±¸¿ä...
¾Ë·ÁÁֽŠReflectionClass·Î ÇÏ´Ï ÈÎ °£°áÇϳ׿ä. °¨»çÇÕ´Ï´Ù. ^^
±×·¯°í º¸´Ï Zend_Registry ·Îµµ ¸¸µé¼ö Àְڳ׿ä
ÇÏÁö¸¸
class My_ClassA extends Zend_ClassA
{
// .....
public static function getInstance($id,$key) {
if (null === self::$_instance) {
self::$_instance = new self($id, $key);
}
return self::$_instance;
}
}
My_ClassA::getInstance($id, $key);
À̹æ¹ý º¸´Ü ¸øÇÏ´Ü »ý°¢À» Áö¿ï¼ö°¡ ¾ø½À´Ï´Ù.
¼öÁ¤À» ¸î¹øÇÏ´Ùº¸´Ï ¼ÛÈ¿Áø´Ô ´ñ±Û¿¡ ÀÖ´Ù°¡
¿Å°Ü¿À°Ô µÇ¾î Á˼ÛÇÑ´ñ±ÛÀÌ µÇ¾ú½À´Ï´Ù.
´õºÒ¾î ¿ÀŸ¹× ¹®¹ý¿À·ù´Â ¾Ö±³ ^^
²Ù¹÷ -


MC½É»õ 09-08-19 10:28
¼Ò½ºº¸±â
-
°í°ß °¨»ç µå¸³´Ï´Ù. ^^
À§ Äڵ尡 ³ª¿Ô´ø ÀÌÀ¯´Â, ClassLoader ¿ªÇÒÀÌ ÄǽÀ´Ï´Ù.
$db = ClassLoader('db.mysql'); Çü½ÄÀ¸·Î »ç¿ë Çß¾úÁÒ..
±¸ÇöÀ» ÇÏ°í º¸´Ï, °°Àº Ŭ·¡½º¸¦ ¿©·¯¹ø »ý¼º½ÃŰ±æ·¡
$db = ClassLoader::getInstance('db.mysql'); Çü½ÄÀÇ ½Ì±ÛÅæÀ¸·Î º¯°æÇÏ¿´½À´Ï´Ù.
¸Þ¼Òµå ³»¿¡¼ ½ÇÇàÇϱ⿡, ÈξÀ ´õ ¸í½ÃÀûÀÌ°í ¿©·¯¹ø È£ÃâµÇ´õ¶óµµ °ÆÁ¤ ¾ø´õ±º¿ä..
³ªÁß¿¡ ClassLoader::clear(); µîÀ¸·Î »ý¼ºµÈ instance¸¦ ÀüºÎ Á¦°ÅÇÒ ¼öµµ ÀÖ±¸¿ä..
ÀÌ°Ô 2004³âÂë ÄÚµå·Î »ý°¢µË´Ï´Ù.
±× ÈÄ ÀÌ ºÎºÐ¿¡ ´ëÇØ¼´Â ÀǽÉÇÑÀû ¾ø¾ú°í, zend³ª php.netÀÇ ¿¹Á¦ ¹× Äڵ带 º¸¸é¼µµ ÀǽÉÀ» ¾È Ç߳׿ä..
Zend_Loader¸¦ º¸¸é¼µµ, ¿Ö instance¸¦ ¹ß»ý½ÃŰÁö ¾ÊÀ»±î?. ¶ó°í¸¸ »ý°¢ÇßÀ¸´Ï±î¿ä..
2004³â¿¡ ºñÇØ ÇÁ·Î±×·¥ ±Ô¸ð°¡ ¾öû Ä¿Áö´Ù º¸´Ï, ±×¿¡ ¸ÂÃç È®ÀåÇÏ°Ô µÇ¸é¼ ¿Ã¸°°Çµ¥¿ä..
Áö³ª°¡´ÂÀÚ´Ô ¸»¾¸À» µè°í º¸´Ï,
¿Ö À§ ÄÚµåµéÀ» º¸¸é¼ ÀǽÉÀ» ¾È Çß´ÂÁö, ºÎ²ô·´³×¿ä..
Áö±Ý º¸´Ï, loader ¿ªÇÒ°ú singleton ¿ªÇÒ µÎ°³¸¦ Çѹø¿¡ Çϰí ÀÖ¾ú´Âµ¥... ÈåÀ½.
´Ù½Ã Á» ÂùÂùÈ÷ ºÐ¼®ÇØ ºÁ¾ß ÇϰڽÀ´Ï´Ù.
´Ô ¸»¾¸°ú °°ÀÌ My_ClassA::getInstance($id, $key); Çü½ÄÀÌ ÈξÀ ´õ ¸í½ÃÀûÀ롂 ºÐ¸íÇÕ´Ï´Ù.
´Ù½Ã ¿¹Àü Äڵ带 »ç¿ëÇÒ ¼öµµ ÀÖ°ÚÁö¸¸, ÃæºÐÇÑ °í·Á ¾øÀÌ »ç¿ëÇÑ °Í°úÀÇ Â÷ÀÌ´Â ¾öû³ª´Ù°í »ý°¢ÇÕ´Ï´Ù.
À߸øµÈ »ý°¢ Áý¾îÁּż Á¤¸» °¨»çÇÕ´Ï´Ù.
ps) Âü°í·Î ¿¹ÀüºÎÅÍ Á¦°¡ ±¸ÇöÇÑ ¹æ½ÄÀº singletonÀ̶ó±â º¸´Ù Fly Weight ÆÐÅÏÀÌ ¾Æ´Ñ°¡ ÀǽÉÀº Çϰí ÀÖ¾ú½À´Ï´Ù. ¸»¾¸ µè°í º¸´Ï È®½ÇÈ÷ ±×ÂÊ¿¡ ´õ °¡±î¿ö º¸À̳׿ä.. -


Áö³ª°¡´ÂÀÚ 09-08-19 10:57
¼Ò½ºº¸±â
-
´öºÐ¿¡ Àúµµ ¸¹Àº °øºÎ°¡ µÇ¾ú½À´Ï´Ù.
°¨»çÇÕ´Ï´Ù ^^ -

³¶¸Á¹é¼ö 09-08-19 14:58
¼Ò½ºº¸±â
-
ÀÌ À̽´´Â º»¹®ÀÇ ¿äÁ¡°ú´Â ¹«°üÇÑ ½ÌŬſ °ü·Ã À̽´ÁÒ? ¸í½ÃÈÇÏ´Â°Ô ÁÁ´Ù´Â?
Çò°¥·Á¼ ¹°¾îº¾´Ï´Ù.
²Ù¹÷~! -


Áö³ª°¡´ÂÀÚ 09-08-19 15:43
¼Ò½ºº¸±â
-
³× ¹¹ ¿ëµµ°¡ Á» ´Ù¸£´Ù ÂëÀÌ ÀúÀÇ ÀǰßÀÔ´Ï´Ù.
==²À ÇÊ¿äÇÏ´Ù¸é== ÀÌÈÄÀÇ ÄÚµå´Â
¿ø±Û¿¡ ¾ð±ÞµÈ ³»¿ëÁß argsÀÇ °¹¼ö¿¡ Á¦ÇÑ ¹ÞÁö ¾Ê°í
ReflectionClass¸¦ ´ëüÇÒ¼ö ÀÖ´Â °íÀüÀû ¹æ¹ýµµ ÁÖ¼®Ã³¸®µÈ ±¸¹®¿¡¼
Á¦½ÃÇϰí ÀÖ½À´Ï´Ù.
function &singleton() {
static $instants;
// .....
}
ÇüÅ·Π¹Ù²Ù¸é php4¹öÀü¿¡¼µµ »ç¿ëÇÒ¼ö ÀÖ±¸¿ä..
°¨»çÇÕ´Ï´Ù.
-


ÇϽÉ^v^ 09-08-19 09:11
¼Ò½ºº¸±â
-
¿©±â ¾Èµå·Î¸Þ´ÙÀΰ¡È¿?
¿ÖÄÉ ¿Ü°è¾î ÇÏ´Â ºÐµéÀÌ ¸¹Áö...Áö±¸°¡ ¾Æ´Ñ°¡..
-


±×³× 09-08-19 21:26
¼Ò½ºº¸±â
-
ÈåÀ½...
°ñÀÚ°¡ ÀÎÀÚ¼ö ´Ù¸¥ Ŭ·¡½º »ý¼ºÀÚ¸¦ Çϳª·Î ÇØ°áÇÏÀÚ..
°¡ ¾Æ´Ñ ½Ì±ÛÅæ¿¡ ÁßÁ¡À» µÐ ¹®Á¦¿´³ª º¸±º¿ä.. -


Áö³ª°¡´ÂÀÚ 09-08-24 00:13
¼Ò½ºº¸±â
-
ÀÎÀÚ¼ö°¡ ´Ù¸¥ Ŭ·¡½ºÀÇ ÀνºÅϽº »ý¼º ¹®¹ý°ú °ü·ÃÇÑ ÀÕ½´°¡ ¸Â½À´Ï´Ù.
½Ì±ÛÅæ ÆÐÅϰú ¿¬°üµÈ ¹®Á¦¶ó ºÎ°¡ Åä·ÐÀÌ ÀÖ¾ú´Ù º¸½Ã¸é µÉµíÇÕ´Ï´Ù ^^
Á¦°¡ ¿Ã¸° Àǰ߿¡µµ Á» ¼öÁØÀÌ ³·Áö¸¸ php4¿¡¼µµ »ç¿ëÇÒ¼ö ÀÖ´Â °°Àº ¸Æ¶ôÀÇ Äڵ尡 ÀÖ½À´Ï´Ù.
°¨»çÇÕ´Ï´Ù.
12345678910



