2014-09-04 91 views
1

我正在嘗試創建一個 Calendar class,它的構造函數中需要一個new DateTime,或者留空以使用當前時間。帶日期時間的PHP日曆類

<?php 
class Calendar 
{ 
    public $dateTime = null; 
    public function __construct($dateTime = new DateTime()) 
    { 
     $this->dateTime = $dateTime; 
     echo $this->dateTime->format('m-d-Y') . "\n"; 
    } 
} 
date_default_timezone_set('UTC'); 
$cal = new Calendar(); 
?> 

,但我不斷收到這樣的:如果我解析錯誤/Users/nfior2/www/projects/companies/cortlandt/activities/cal.php第5行

解析錯誤改變線5

public function __construct($dateTime = new DateTime()) 

到使用int

public function __construct($dateTime=10) 

並調整function __construct()正文有點沒有使用DateTime::format ...它工作正如我所料。

任何人都可以告訴我這裏發生了什麼,或者我可以怎麼做到底?

回答

1

你可以試試這個代碼:

<?php 
class Calendar 
{ 
    public $dateTime = null; 
    public function __construct($dateTime = null) 
    { 
     $this->dateTime = (isset($dateTime)? $dateTime : new DateTime()); 
     echo $this->dateTime->format('m-d-Y') . "\n"; 
    } 
} 
date_default_timezone_set('UTC'); 
$test = new DateTime('2000-01-01'); 

$cal1 = new Calendar($test); 
$cal2 = new Calendar(); 
?> 
+0

酷,這工作真棒。你能解釋爲什麼我的代碼不工作嗎?我也很好奇,爲什麼我在我的屬性聲明中設置'public $ dateTime = new DateTime();'時遇到了麻煩。我遇到了問題中描述的相同錯誤。 – nf071590 2014-09-04 15:20:28

+0

http://stackoverflow.com/questions/2202995/declare-property-as-object – nf071590 2014-09-04 15:25:55

+0

我更正了'isset($ dateTime)'中的變量名稱,並添加了另一個用於測試目的 – 2014-09-04 15:34:34