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

そしてこれはLINE10にありますvar $today = date('Y-m-d H:i:s',strtotime('now'));

ありがとう、

4

4 に答える 4

3

ジュリアンの答えが述べたことをさらに詳しく説明するために、クラス宣言の変数割り当てで関数を使用することはできません。もちろん、通常の変数を定義しているときに使用できます。

これを回避する方法は、次のようにコンストラクターで値を割り当てることです。

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;
    }

    // ...
}

補足として、varPHP4構文です。したがって、PHP5を使用している場合は、アクセス修飾子を使用することを強くお勧めします。public//使用方法に基づいて、フィールドとメソッドの両方を定義しますprivateprotected

于 2012-07-10T16:34:20.963 に答える
2

たとえば、関数を使用することはできません。クラス変数宣言のdate()。

于 2012-07-10T16:29:28.983 に答える
1

クラスプロパティ定義で関数を呼び出すことはできません。次のように変数を定義してください。

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 に答える
1

SQLを使ってみませんか?私はCakePHP2を使用していますが、これが私が行う方法であり、正常に機能します。また、配列が欠落していると思います。

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