두 클래스가 있습니다 : SuperObject 및 PageGenerator.하위 클래스의 부모 클래스 필드 가져 오기
PageGenerator (및 다른 클래스의 묶음)는 SuperObject를 상속하며 SuperObject는 데이터베이스 연결을 위해 'db_conn'이라는 필드를 가지고 있습니다.
그래서 내 코드는 같은 같습니다
class SuperObject {
protected static $db_conn = null;
public function __construct($db){ $this->db_conn = $db; }
}
class PageGenerator extends SuperObject {
public function some_function(){
//something using parent::$db_conn;
}
}
// somewhere down the way
$so = new SuperObject($db_object);
$page = new PageGenerator();
$page->some_function();
을하지만 난 적어도 그 좋아하지 것을 할 수없는 가정합니다.
그럼 어떻게해야합니까?
public function some_function(){
var_dump(self::$db_conn); //not parent::$db_conn;
}
을하지만 당신은 객체 (superobject)에서 제대로 초기화하기 없습니다 :
허. 와우, 그게 효과가있어. 이런 일을하는 데있어서 단점이 있습니까? – user2900816
정적 속성은 클래스 속성이지만 객체는 아닙니다. 즉, 정적 속성의 값은 어떤 인스턴스에서 변경하면 각 클래스 인스턴스에 대해 변경됩니다. – romik