2012-07-10 60 views
0

我無法弄清楚什麼是錯用下面的代碼:PHP - 錯誤的變量定義

我收到以下錯誤消息:

Parse error: syntax error, unexpected '(', expecting ',' or ';' in /home/XXXXXXXX/public_html/app/controllers/articles_controller.php on line 10 

而且這是在10號線var $today = date('Y-m-d H:i:s',strtotime('now'));

謝謝,

+0

@des我看到兩個左括號,兩個關閉 - 沒有不匹配。 – ninetwozero 2012-07-10 16:30:51

+0

Right .... Julien說我不能在那裏使用date()函數。 – 2012-07-10 16:34:24

回答

3

若要進一步闡述Julien的答案,您不能在類聲明的變量賦值中使用函數,當然您可以在定義正常變量時使用函數。

解決的辦法是分配你的價值觀在構造函數中,像這樣:

class ArticlesController extends AppController 
{ 
    public $name = 'Articles'; 
    // Variable $today is defined here so it can be used 
    // in other functions in this same class 
    public $today; 
    public $helpers = array('Video'); 

    public function __construct() 
    { 
     parent::__construct(); 

     $this->today = date('Y-m-d H:i:s'); // You also don't need strtotime('now'); 
    } 

    public function frontpageArticles() 
    { 
     $articles = $this->Article->find(
      'all', 
      'conditions' => array(
       'Article.published' => 1, 
       'Article.publish_date <=' => $this->today // USED HERE 
      ) 
     ); 
     return $articles; 
    } 

    // ... 
} 

只是一個側面說明,var是PHP4語法,所以如果你使用PHP5我會強烈建議你使用訪問修飾符即。 public/private/protected根據它們將如何使用來定義您的字段和方法。

+0

。另一個偉大的PHP課給我。 – 2012-07-10 16:50:41

2

你不能使用函數,例如。 date類()在類變量聲明中。

+0

有什麼建議嗎? – 2012-07-10 16:33:19

+0

是的,''Article.publish_date <=' => date('Y-m-d H:i:s',strtotime('now'));'如果你沒有在別的地方使用這個日期,否則在你的構造函數中定義它。 – Josh 2012-07-10 16:35:08

+0

我使用它在一些更多的功能....我可能必須嘗試構造函數,然後..謝謝你的詳細代碼 – 2012-07-10 16:38:29

1

你不能叫類屬性定義功能,定義你的VAR,如:

var $today; 

然後將其設置在你的函數:

$today = date('Y-m-d H:i:s',strtotime('now')); 

,如果你想設置once-創建一個__construct函數

function __construct(){ 
    $today = date('Y-m-d H:i:s',strtotime('now')); 
} 
1

爲什麼不使用SQL?我使用CakePHP 2,這是我如何做的,工作正常。 此外我想你是缺少一個數組:

$this->Article->find('all', array(
    'conditions'=>array(
      'Article.published_date<=NOW()' 
    ) 
)); 
+0

你必須把它寫在關鍵中,如果你這樣使用它,而不是作爲一個值。就像我做的一樣! – amstegraf 2012-07-10 20:07:09