2016-11-06 2 views
1

子の新しい特性を作成するときに、どのようにParentプロパティを取得できますか?私のクラスは継承を必要としないことに注意してください。私の目的は、それだけで1対多の関係を示すことです。ありがとう子を使用して親プロパティにアクセスする

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 
+1

はnullです>プロパティは=新しい親() – Aerendir

+1

はまた、テストのエコーではありませんより良い選択:代わりにvar_dump()を使用してください。 – Aerendir

+1

var_dump($ myChild)を試して、そのプロパティがnullであることを確認してください。 – Aerendir

答えて

1

これにはget_parent_class()を使用できます。以下の例:

<?php 

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

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

PHP 7でのみ、メソッドはクラス自体と同じ名前を持つ可能性があります。おそらく、それを '__construct()'に変更することができます(メソッドのみを意味します) – Xorifelse

0

使用親::あなたがmyChild-のような何かをするまで、このコードの親プロパティで

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(); 
+0

これは、オブジェクト間の関係を示し、Childから直接Parentのプロパティにアクセスしないという彼の目的に関しては間違っています。このシナリオでは、inehiratsnceは間違った選択です。 – Aerendir

関連する問題