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