Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP基本面向对象问题_Php_Oop - Fatal编程技术网

PHP基本面向对象问题

PHP基本面向对象问题,php,oop,Php,Oop,如何将在第一个类$this中设置的变量传递给第二个类?正确的方法是在子类中使用$this->id。所有公共/受保护的变量都可以通过这种方式访问子类。通过分配$this->id而不声明它,您已经隐式地公开了它。通常,您应该在基类中显式声明变量,以记录将其公开的意图: class a { public function __construct() { $this->id = 123; } } class b extends a { public

如何将在第一个类$this中设置的变量传递给第二个类?

正确的方法是在子类中使用
$this->id
。所有公共/受保护的变量都可以通过这种方式访问子类。通过分配
$this->id
而不声明它,您已经隐式地公开了它。通常,您应该在基类中显式声明变量,以记录将其公开的意图:

class a
{
    public function __construct()
    {
        $this->id = 123;
    }
}

class b extends a
{
    public function __construct()
    {
        echo parent::id;
    }
}
在尝试访问父类设置的成员之前,请记住调用
parent::\u construct()
。与某些语言(C++)不同,父类的构造函数不会自动为您调用

class a
{
    public $id;

    public function __construct()
    {
        $this->id = 123;
    }
}

正确的方法是在子类中简单地使用
$this->id
。所有公共/受保护的变量都可以通过这种方式访问子类。通过分配
$this->id
而不声明它,您已经隐式地公开了它。通常,您应该在基类中显式声明变量,以记录将其公开的意图:

class a
{
    public function __construct()
    {
        $this->id = 123;
    }
}

class b extends a
{
    public function __construct()
    {
        echo parent::id;
    }
}
在尝试访问父类设置的成员之前,请记住调用
parent::\u construct()
。与某些语言(C++)不同,父类的构造函数不会自动为您调用

class a
{
    public $id;

    public function __construct()
    {
        $this->id = 123;
    }
}

您可以使用
parent::\uu construct()
获取在父类中初始化的内容。如果在子类中没有任何要初始化的内容,可以避免在子类中使用
\uu construct()
,它将自动采用父类构造

您可以使用
parent::\uu construct()
来获取在父类中初始化的内容。如果在子类中没有任何要初始化的内容,可以避免在子类中使用
\uu construct()
,它将自动采用父类构造

+1很高兴有和更有经验的人一样的想法,而且。。。更快:)@Matthew没有理由不公开;访问权限不是问题的主题。原因与往常一样,不要使访问权限超出必要范围。没有迹象表明在课堂之外需要
id
。我没有说这是主要的问题。“马修,我认为这很切切;我还可以给这些类起更好的名字,并定义getter/setter方法,只要我们特意编写一个“正确的”8行代码片段。对于提问的新手来说,这绝不会让答案更清楚。@meagar,你没有介绍类名,但你是添加字段声明的人。因为他是个新手(可能对访问说明符有点不熟悉),所以澄清一下只需要
受保护的
。+1很高兴像更有经验的人一样有同样的想法,而且。。。更快:)@Matthew没有理由不公开;访问权限不是问题的主题。原因与往常一样,不要使访问权限超出必要范围。没有迹象表明在课堂之外需要
id
。我没有说这是主要的问题。“马修,我认为这很切切;我还可以给这些类起更好的名字,并定义getter/setter方法,只要我们特意编写一个“正确的”8行代码片段。对于提问的新手来说,这绝不会让答案更清楚。@meagar,你没有介绍类名,但你是添加字段声明的人。因为他是个新手(可能对访问说明符有点不熟悉),所以澄清一下只需要
受保护的
是很有用的parent::id在这种情况下,因为它不是父类中的静态属性。