【问题标题】:PHP Calendar Class with DateTime带有 DateTime 的 PHP 日历类
【发布时间】:2014-09-04 14:47:08
【问题描述】:

我正在尝试创建一个 Calendar class 在其构造函数中采用 new DateTime 或留空以使用当前时间。

<?php
class Calendar
{
    public $dateTime = null;
    public function __construct($dateTime = new DateTime())
    {
        $this->dateTime = $dateTime;
        echo $this->dateTime->format('m-d-Y') . "\n";
    }
}
date_default_timezone_set('UTC');
$cal = new Calendar();
?>

但我不断得到这个:

解析错误:第 5 行 /Users/nfior2/www/projects/companies/cortlandt/activities/cal.php 中的解析错误

如果我更改第 5 行

public function __construct($dateTime = new DateTime())

使用整数

public function __construct($dateTime=10)

并在不使用DateTime::format 的情况下稍微调整function __construct() 主体...它可以正常工作。

谁能告诉我这里发生了什么,或者我如何才能弄清楚这件事的真相?

【问题讨论】:

    标签: php datetime calendar


    【解决方案1】:

    你可以试试这个代码:

    <?php
    class Calendar
    {
        public $dateTime = null;
        public function __construct($dateTime = null)
        {
            $this->dateTime = (isset($dateTime)? $dateTime : new DateTime());
            echo $this->dateTime->format('m-d-Y') . "\n";
        }
    }
    date_default_timezone_set('UTC');
    $test = new DateTime('2000-01-01');
    
    $cal1 = new Calendar($test);
    $cal2 = new Calendar();
    ?>
    

    【讨论】:

    • 酷,这很棒。你能帮忙解释为什么我的代码不起作用吗?我也很好奇为什么我在搞砸这个类时在我的属性声明中设置public $dateTime = new DateTime(); 时遇到了麻烦。我遇到了问题中描述的相同错误。
    • 我已经更正了 isset($dateTime) 中的变量名称并添加了另一个用于测试目的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多