php - 静态标准: Non-Static method Date utility

标签 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
    }

// first error code 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);

帮我解决这个错误

最佳答案

您遇到的问题不止一个:

在实例方法 subtractDaysFromDate() 中,静态调用 addDaysToDate(),这也是实例方法。然后你需要用$this->来调用它。但它会产生 fatal error ,原因很简单:

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

关于php - 静态标准: Non-Static method Date utility,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22700152/

相关文章:

php - 在 ColdFusion MX7 和 PHP 5.x 上工作相同的散列函数?

mysql - 在mysql查询中使用bash命令行变量

javascript - 如何将值从 Node.js 服务器传递到 HTML 页面内嵌入的 Javascript 代码?

php - 如何在php中的另一个多键/值数组中查找多键/值对组合数组

php - 多个 MySQLi 准备语句和漏洞(对我的代码进行评分)

javascript - 无法使用键盘箭头滚动我的网站

php - 将 PHP 变量值与 MySQL 列值进行比较

mysql - 如果没有记录,我怎么能算作 0?

php - 所有页面的 url codeigniter 多语言

php - MySQL 日期选择查询不起作用