2

OOP の概念を真剣に誤解しているか、ここで間違って実装しているかはわかりません。ここで私が間違っていることを誰かに説明してもらえますか

<?php

class my {
    public function myName(){
        return get_class($this);   
    }
    public function toArray() {
        $retArray=array();
        $class_vars = get_object_vars($this);

        foreach ($class_vars as $name => $value) {
           $retArray[$name]=$value;
        }
        return $retArray;
    }
}
class you extends my {
    private $yoo;
    public function __construct($var1) {
        $this->yoo=$var1;
    }
}
$objectYou = new you("I am pri");
echo '<pre>';
echo $objectYou->myName();
echo '<br>';
print_r($objectYou->toArray());
echo '</pre>';
?> 

出力は次のとおりです。

あなた

配列 ( )

ここで欲しいのは、オブジェクトを配列に変換するmy機能を持つスーパークラスを持つことです。toArrayこれで、このクラスを拡張するすべてのクラスがこの関数を継承し、使用できるようになります。しかし、ここで toArray を呼び出すと、objectYou空の配列が返されます。同時に呼び出すと、子クラスの名前が表示myNameされます。objectYou

4

1 に答える 1

4

唯一のプロパティ ( $yoo) は非公開であるためmy、 toArray() が定義されている からはアクセスできません。

于 2013-10-02T12:28:29.373 に答える