Comment detail

n日後を返す関数を返す関数 (Nested Flatten)
PHPで関数をオブジェクトもしくはリファレンスで扱う方法ってあるのかな… あったら教えてください!
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
class NDaysLater
{
	private $_nday=0;
	
	private function __construct($nday)
	{
		$this->_nday=($nday>0)?'+'.$nday:$nday;
	}
	
	public static function n_days_later($nday=0)
	{
		return new NDaysLater($nday);
	}
	
	public function __toString()
	{
		return strftime("%Y, %m, %d, %H, %M, %S",strtotime("{$this->_nday} days"));
	}
}

$fivedayslater = NDaysLater::n_days_later(5);
print $fivedayslater;
?>
できますよ。create_functionを使います。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
function n_days_later($days) {
  return create_function('$d',
    'return getdate(mktime(
       $d["hours"], $d["minutes"], $d["seconds"], $d["mon"],
       $d["mday"] + '. $days . ', $d["year"]
    ));');
}

$five_days_later = n_days_later(5);
$date = $five_days_later(getdate());

print_r($date);

Index

Feed

Other

Link

Pathtraq

loading...