/**d,0c ./. ;.l;. ㅣ;'/,. * closer.php * * * @since 2018. 6. 13. * @version 1.0 */class App{protected $routes = array(); protected $responseStatus = '200 ok'; protected $responseContentType = 'text/html'; protected $responseBody = 'Hello world'; public function addRoute($routePath, $routeCallBack){$this->routes[$routePath] = $routeCallBack->bindTo($this,__CLASS__); }public function dispatch($curr..
php 옵션-i or --file : 파일지정-a or --interactive ( php 명령을 실행할수 있는 콘솔모드가 나타남)-c or --php-ini : php.ini 파일을 지정할수 있다.-d or --define 옵션을 사용하면 ( php -d max_ececute_time=2000 myscript.php ) 바로 지정가능-n or --no-php-ini : php.ini 사용하지 않는다.-e or --profile-info : ??-i or --info : phpinfo() 호출-l or --syntac-check : 문법검사를 수행한다.-m or --modules : php 와 젠드 확장 익스텐션 모두를 출력한다.-r or --run : php 한줄 라인 실행한다. 인자를 줄수 있다.-B..
$now = new DateTime('now'); $yesterday = clone $now; $yesterday->sub(new DateInterval('P1D')); echo $yesterday->format('Y-m-d H:i:s'); $raw = '22. 11. 2016'; $start = DateTime::createFromFormat('d. m. Y', $raw); $end = clone $start; $end->add(new DateInterval('P1M6D')); // $start를 복제한 다음 한 달하고 6일을 더한다. echo 'Start date: ' . $start->format('Y-m-d') . "\n"; $diff = $end->diff($start); echo 'Differ..
header('Content-Type: text/html; charset=UTF-8'); // state 패턴 // Capsule // SOLD 있음 , SOLD_OUT 동전 없음 , Capsule 매진, Capsule 판매 ( 상태 ) // 통전 투입, 통전 반환, 손잡이 돌림, Capsule 내보냄 ( 행동 ) class CapsuleMachine { static $SOLD_OUT = 0; //매진인 상태 static $COIN_IN = 1; //동전 넣기를 기다리는 상태 static $HAS_COIN = 2; //동전이 들어있는상대 static $SOLD = 3; //손잡이를 돌리고 난 후 알맹이를 받을수 있는상태 public $_state = 0; //상태를 관리하기 위한 변수 public $_c..
* @since ${DAY} * @version 1.0 */// 상속의 문제 - 서블크래스를 만드는 방식으로 행동을 상속 받으면 그 행동은 커파일시 완전히 결정이 되고, 모든 서브 클래스에서// 똑같이 행동을 상속 받아야 한다.// 하지만 수정을 통해 객체의 행동을 확장하면 실행중에 동적으로 행동을 설정할 수 있다.// 상속을 통해 확장을 할 수도 있지만, 디자인 유연성 면에서는 별로 좋지 않다.// 기존 코드를 수정하지 않고도 행동을 확장하는 방법이 필요하다.// 구성과 위임을 통해서 실행중에 새로운 행동을 추가할 수 잇다.// 상속 대신 데코레이터 패턴을 통해서 행동을 확장 할 수 잇다.// 데코레이터 패턴에서는 구상 구성 요소를 감싸주는 데코레이터를 사용한다.// 데코레이터의 슈퍼 클래스는 자..