OOP의 개념을 잘못 이해하고 있거나 잘못 구현하고 있는지 잘 모르겠습니다. 누군가가 내가php get_object_vars가 하위 클래스를 호출하지 못했습니다.
<?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를 호출하면 빈 배열이 반환됩니다. 동시에 myName
을 objectYou
에 호출하면 하위 클래스의 이름이 표시됩니다.
'class you '에'$ yoo'를'private' 대신'protected'로 만들어보세요. –