【问题标题】:Object of a class inside another class另一个类中的一个类的对象
【发布时间】:2013-08-14 02:43:39
【问题描述】:
class date{
    public $now,$today;
    public function __construct(){
        $now = new DateTime("now");
        $today = new DateTime("today");
    }
}

$date= new date();
echo $date->$now->format('l, jS F Y, g:i A');

代码不能正常工作

注意:未定义的属性:date::$now

根据 OOP 概念,我需要在任何函数之外的类内声明 $now$today。但 php 不需要声明变量。

正确的方法是什么?

【问题讨论】:

  • 请阅读properties 上的 PHP 手册页面,因为它涵盖了属性访问的正确语法(这将更正代码中的两个错误)。

标签: php oop


【解决方案1】:

您现在和今天将声明为构造函数的局部变量,而不是类的实例变量。然后您需要使用 $this 引用它们

class date{
    public $now;
    public $today;

    public function __construct(){
        $this->now = new DateTime("now");
        $this->today = new DateTime("today");
    }
}

您可能还想重命名该类,以免与内置日期方法混淆。

【讨论】:

  • 重命名类。我认为 php 混淆了它的日期构建 n 函数
  • 这个答案虽然有用,但实际上并没有解决由$date->$now引起的错误;你的答案加上$date->now->format(...) 的正确语法可以解决它。
【解决方案2】:

这里你有 php 中 OOP 的正确形式:

<?php
class date{
        public $now;
        public $today;

        public function __construct(){
                $this->now = new DateTime("now");
                $this->today = new DateTime("today");
        }
}

$date= new date();
echo $date->now->format('l, jS F Y, g:i A');
?>

【讨论】:

    猜你喜欢
    • 2022-01-18
    • 2013-02-17
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多