Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.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

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,当我为我的孩子创建新的距离时,如何获取父属性。请注意,我的类不需要继承,因为我的目的只是为了显示一对多的关系。谢谢 class Parent{ $property; //getter and setter } class Child{ $parent; //for Parent Type } myChild = new myChild(); echo myChild->parent->property;// t

当我为我的孩子创建新的距离时,如何获取父属性。请注意,我的类不需要继承,因为我的目的只是为了显示一对多的关系。谢谢

 class Parent{
     $property;

    //getter and setter
    }

    class Child{
    $parent; //for Parent Type
    }

    myChild = new myChild();
    echo myChild->parent->property;// this line does not work for me

您可以为此使用
get\u parent\u class()
。例如:

<?php

class parent {
    function parent_class()
    {
    // implements some logic
    }
}

class child extends parent {
    function __construct()
    {
        echo get_parent_class($this);
    }
}
$CHILD = new child();
?>

使用父项:

class A {
  function example() {
    echo "I'm parent";
  }
}

class B extends A {
  function example() {
    echo "I'm child";
    parent::example();
  }
}

$b = new B;

// This will call B::example(), which will in turn call A::example().
$b->example();

在这段代码中,在执行类似myChild->property=new parent()的操作之前,父属性为null。此外,echo to test不是更好的选择:使用var_dump()。尝试var_dump($myChild)并查看该属性是否为null。否,意味着将父对象分配给属性Child::parent。扩展是“子扩展父”。但出于您的目的,您不需要扩展,只需要赋值。您可以(应该)在_construct()方法中执行此操作,如您收到的一个答案所示。如果您不想使用继承(扩展)。你需要使用构图。i、 e.将父项分配给子项
。此外,属性应该是私有的,以防止其他类更改它们。因此,需要使用
magic
函数来访问它们。通常使用
getter
setter
。所有这些示例:只有在PHP7中,一个方法可能与类本身具有相同的名称,也许可以将其更改为
\uu construct()
(我指的是仅此方法…)这是错误的,因为他显示对象之间的关系,而不是直接从子对象访问父对象的属性。在这种情况下,不雇佣是错误的选择。