静态标准:非静态方法Date实用程序

时间:2014-03-27 22:02:11

标签: php mysql

严格标准:非静态方法不应静态调用DateUtility :: subtractDaysFromDate(),假设$ this来自/home/zumpu/public_html/cats/cats-0.8.0/modules/activity/ActivityUI中的不兼容上下文。 php在第449行

严格标准:非静态方法不应静态调用DateUtility :: addDaysToDate(),假设$ this来自/home/zumpu/public_html/cats/cats-0.8.0/lib/DateUtility.php中的不兼容上下文第285行

public function subtractDaysFromDate($startDate, $daysToSubtract)
    {
        return self::addDaysToDate($startDate, ($daysToSubtract * -1)); //285 line
    }
  

//第一个错误代码行449

private function makeQuickLinkURL($dayOfWeek)
    {
        /* PHP's date('w') uses 0-6 to represent weekdays, but the CATS weekday
         * constants use 1-7.
         */
        $dayOfWeek--;

        $currentDate = time();
        $daysDifference = date('w', $currentDate) - $dayOfWeek;

        $linkDate = DateUtility::subtractDaysFromDate($currentDate, $daysDifference);//**line 449**

        switch ($daysDifference)
        {
            case -1:
                $dayString = '<span style="display: inline;">Tomorrow</span>';
                break;

            case 0:
                $dayString = '<span style="color: #ff6600; display: inline;">Today</span>';
                break;

            case 1:
                $dayString = '<span style="display: inline;">Yesterday</span>';
                break;

            default:
                $dayString = date('l', $linkDate);
                break;
        }

        $month = date('n', $linkDate);
        $day   = date('j', $linkDate);
        $year  = date('Y', $linkDate);

帮助我解决此错误

1 个答案:

答案 0 :(得分:0)

这里有多个问题:

在您的实例方法subtractDaysFromDate()中,您静态调用addDaysToDate(),这也是实例方法。然后你需要用$this->来调用它。但由于一个简单的原因,它会产生致命错误:

$this指的是当前实例,但你没有:

$linkDate = DateUtility::subtractDaysFromDate($currentDate, $daysDifference);

因为静态调用subtractDaysFromDate(),所以没有实例。

您应该决定这些方法是否是静态的,并在两者上添加关键字static,或者通过类的实例调用它们。

在这种情况下,DateUtility类需要实例化。

$dateUtility = new DateUtility();
$linkDate = $dateUtility->subtractDaysFromDate($currentDate, $daysDifference);

然后

public function subtractDaysFromDate($startDate, $daysToSubtract)
    {
        return $this->addDaysToDate($startDate, ($daysToSubtract * -1)); //285 line
    }