0

我无法弄清楚以下代码有什么问题:

class ArticlesController extends AppController{
    var $name = 'Articles';
    // Variable $today is defined here so it can be used
    // in other functions in this same class 
    var $today = date('Y-m-d H:i:s',strtotime('now'));
    var $helpers = array('Video');

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

    // ...
}

我收到以下错误消息:

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'));

谢谢,

4

4 回答 4

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//根据使用方式定义字段privateprotected方法。

于 2012-07-10T16:34:20.963 回答
2

您不能使用功能,例如。date() 在类变量声明中。

于 2012-07-10T16:29:28.983 回答
1

为什么不使用 SQL?我使用 CakePHP 2,我就是这样做的,效果很好。另外我认为你缺少一个数组:

$this->Article->find('all', array(
     'conditions'=>array(
           'Article.published_date<=NOW()'
     )
));
于 2012-07-10T20:06:01.110 回答
1

你不能在类属性定义中调用函数,定义你的 var 像:

var $today;

然后在你的函数中设置它:

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

如果您想设置一次 - 创建一个__construct函数

function __construct(){
    $today = date('Y-m-d H:i:s',strtotime('now'));
}
于 2012-07-10T16:35:41.197 回答