위치 : http://kr1.php.net/manual/en/function.call-user-func-array.php
<?php
Class Delegate
{
private $arrInstances = array();
protected function addObject( $oElement )
{
// add one element on the end of the stack //
$this->arrInstances[] = $oElement;
}
public function __call( $strMethod, $arrParams )
{
// for each element in instance //
foreach( $this->arrInstances as $oElement )
{
// get the class of the element //
$strClass = get_class( $oElement );
// get all methods of the class //
$arrMethods = get_class_methods( $strClass );
// case the method exists into this class //
if( in_array( $strMethod , $arrMethods ) )
{
// prepare caller //
$arrCaller = Array( $strClass , $strMethod );
// return the result of the method into the object //
return call_user_func_array( $arrCaller, $arrParams );
}
}
// any object has the method //
// throw a exception //
throw new Exception( " Method " . $strMethod . " not exist in this class " . get_class($this ) . "." );
}
}
class Log
{
public function sayHi()
{
print "hi!" . "<br/>\n";
}
public function sayMyName()
{
print "log" . "<br/>\n";
}
}
class Other
{
public function sayHello()
{
print "hello there!" . "<br/>\n";
}
public function sayMyName()
{
print "other" . "<br/>\n";
}
}
class Example extends Delegate
{
public function __construct()
{
$this->addObject( new Log() );
$this->addObject( new Other() );
}
}
$oExample = new Example();
$oExample->sayHi();
$oExample->sayHello();
$oExample->sayMyName();
/*
hi!<br/>
hello there!<br/>
log<br/>
*/
?>
댓글 6개
11년 전
이거 어디라 사용하실려구요? 그냥 매직함수 __call 사용한 것 뿐인데...
11년 전
$this->addObject( new Log() );
$this->addObject( new Other() );
이부분.......상속말고 다른 Class 의 Method 을 자신의 Method 처럼 사용하는 부분입니다.
급할땐 용이하죠...
$this->addObject( new Other() );
이부분.......상속말고 다른 Class 의 Method 을 자신의 Method 처럼 사용하는 부분입니다.
급할땐 용이하죠...
11년 전
아~ ^^ 그건 그렇죠 ... new 새로 메모리에 공간을 개설하면 메모리 작으면 좀 버벅 거릴겁니다.
11년 전
저 코드는 메모리에 차지하는 용량을 무시해도 될 정도의 코드예요.....ㅠ_ㅠ
워프는 콜리앗 ... class 로 만든 저 샘플은 개미 발에 미세먼지
혹 new 로 만드는게 버벅일꺼라 생각하시는거라면.......
Framework 쪽 한번 보시는것을 추천 드립니다.
워프는 콜리앗 ... class 로 만든 저 샘플은 개미 발에 미세먼지
혹 new 로 만드는게 버벅일꺼라 생각하시는거라면.......
Framework 쪽 한번 보시는것을 추천 드립니다.
11년 전
Framework 쪽으로 하고는 있습니다. 사이트는 가벼워야하니까 ^^
11년 전
제가 만들어 쓰고 있는 EventDispatcher 라는 클래스와 비슷하네요.
예를 들어 게시판에 로그인이 필요한 부분에는 Dispatcher 만 해주고 관련 처리는 외부 함수를 addEventHandler 메소드로 연결해 주기만 하면 되죠.
이런걸 Observer 패턴이라고 하등가... 머 그럴겁니다.
예를 들어 게시판에 로그인이 필요한 부분에는 Dispatcher 만 해주고 관련 처리는 외부 함수를 addEventHandler 메소드로 연결해 주기만 하면 되죠.
이런걸 Observer 패턴이라고 하등가... 머 그럴겁니다.
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 530 |
|
19년 전 | 1231 | |
| 529 |
|
19년 전 | 1413 | |
| 528 |
|
19년 전 | 1977 | |
| 527 |
사랑과우정
|
19년 전 | 2387 | |
| 526 | 19년 전 | 2869 | ||
| 525 |
|
19년 전 | 2292 | |
| 524 |
|
19년 전 | 1798 | |
| 523 | 19년 전 | 7037 | ||
| 522 |
|
19년 전 | 3727 | |
| 521 | 19년 전 | 2337 | ||
| 520 | 19년 전 | 2373 | ||
| 519 | 19년 전 | 2866 | ||
| 518 |
|
19년 전 | 5780 | |
| 517 |
|
19년 전 | 5553 | |
| 516 |
|
19년 전 | 2259 | |
| 515 |
|
19년 전 | 3294 | |
| 514 | 19년 전 | 2864 | ||
| 513 | 19년 전 | 2216 | ||
| 512 |
개발자관리자
|
19년 전 | 2728 | |
| 511 |
개발자관리자
|
19년 전 | 1582 | |
| 510 |
개발자관리자
|
19년 전 | 1738 | |
| 509 |
개발자관리자
|
19년 전 | 1839 | |
| 508 |
개발자관리자
|
19년 전 | 2005 | |
| 507 |
개발자관리자
|
19년 전 | 1684 | |
| 506 |
개발자관리자
|
19년 전 | 1805 | |
| 505 |
개발자관리자
|
19년 전 | 1772 | |
| 504 |
개발자관리자
|
19년 전 | 1852 | |
| 503 |
개발자관리자
|
19년 전 | 1521 | |
| 502 |
개발자관리자
|
19년 전 | 2648 | |
| 501 | 19년 전 | 1994 | ||
| 500 | 19년 전 | 3236 | ||
| 499 | 19년 전 | 3265 | ||
| 498 | 19년 전 | 2522 | ||
| 497 | 19년 전 | 2601 | ||
| 496 | 19년 전 | 2439 | ||
| 495 | 19년 전 | 2697 | ||
| 494 | 19년 전 | 2678 | ||
| 493 | 19년 전 | 3178 | ||
| 492 | 19년 전 | 2887 | ||
| 491 | 19년 전 | 5301 | ||
| 490 |
|
19년 전 | 2123 | |
| 489 |
|
19년 전 | 2212 | |
| 488 |
|
19년 전 | 2007 | |
| 487 |
|
19년 전 | 1943 | |
| 486 |
|
19년 전 | 1939 | |
| 485 |
|
19년 전 | 2135 | |
| 484 |
|
19년 전 | 3210 | |
| 483 |
|
19년 전 | 3090 | |
| 482 |
|
19년 전 | 2852 | |
| 481 |
|
19년 전 | 2542 | |
| 480 |
|
19년 전 | 2629 | |
| 479 |
|
19년 전 | 2295 | |
| 478 |
|
19년 전 | 2327 | |
| 477 |
개발자관리자
|
19년 전 | 1588 | |
| 476 |
개발자관리자
|
19년 전 | 2308 | |
| 475 |
개발자관리자
|
19년 전 | 2657 | |
| 474 |
개발자관리자
|
19년 전 | 2654 | |
| 473 |
개발자관리자
|
19년 전 | 2967 | |
| 472 | 19년 전 | 2731 | ||
| 471 | 19년 전 | 1724 | ||
| 470 | 19년 전 | 1826 | ||
| 469 |
|
19년 전 | 2726 | |
| 468 |
|
19년 전 | 2219 | |
| 467 |
|
19년 전 | 3993 | |
| 466 |
|
19년 전 | 2506 | |
| 465 | 19년 전 | 2377 | ||
| 464 | 19년 전 | 3522 | ||
| 463 |
|
19년 전 | 3100 | |
| 462 |
|
19년 전 | 2239 | |
| 461 |
|
19년 전 | 3035 | |
| 460 |
|
19년 전 | 2240 | |
| 459 |
|
19년 전 | 3096 | |
| 458 |
|
19년 전 | 3526 | |
| 457 |
|
19년 전 | 5211 | |
| 456 |
|
19년 전 | 3131 | |
| 455 |
스마일미디어
|
19년 전 | 3130 | |
| 454 |
스마일미디어
|
19년 전 | 2718 | |
| 453 |
스마일미디어
|
19년 전 | 2460 | |
| 452 |
스마일미디어
|
19년 전 | 2717 | |
| 451 |
스마일미디어
|
19년 전 | 2443 | |
| 450 |
스마일미디어
|
19년 전 | 2560 | |
| 449 |
스마일미디어
|
19년 전 | 2363 | |
| 448 |
스마일미디어
|
19년 전 | 2691 | |
| 447 | 19년 전 | 2959 | ||
| 446 |
스마일미디어
|
19년 전 | 3244 | |
| 445 |
스마일미디어
|
19년 전 | 7048 | |
| 444 |
스마일미디어
|
19년 전 | 5167 | |
| 443 |
스마일미디어
|
19년 전 | 2423 | |
| 442 |
스마일미디어
|
19년 전 | 5160 | |
| 441 |
스마일미디어
|
19년 전 | 3100 | |
| 440 |
|
19년 전 | 2460 | |
| 439 | 19년 전 | 2153 | ||
| 438 | 19년 전 | 3566 | ||
| 437 |
|
19년 전 | 2869 | |
| 436 |
|
19년 전 | 3247 | |
| 435 |
|
19년 전 | 2885 | |
| 434 | 19년 전 | 3381 | ||
| 433 |
sjsjin
|
19년 전 | 2709 | |
| 432 |
sjsjin
|
19년 전 | 3453 | |
| 431 |
sjsjin
|
19년 전 | 2416 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기