2014-12-21 3 views
0

나는이 문제가있다 : Model 클래스에서 보호 된 변수를 만들지 만 Model 클래스의 자식에서는 사용할 수 없다.PHP : 자식의 정의되지 않은 변수

class Model_Main extends Model{ 

    public function get_data(){ 
     $db->select('news'); 
    } 
} 

오류 :

Notice: Undefined variable: db in /var/www/localhost/htdocs/app/models/model_main.php on line 5

Fatal error: Call to a member function select() on null in /var/www/localhost/htdocs/app/models/model_main.php on line 5

+1

당신이있어 아마 PHP OOP와'$ this-> db' – meagar

+1

처음 이후? http://php.net/manual/en/language.oop5.basic.php에 대한 설명서를 한 번 읽으십시오. – sectus

답변

2

$db에서 $this->db까지 두 클래스로 변경하십시오.

class Model 
{ 
    protected $db = null; 

    public function __construct() 
    { 
     require_once 'app/classes/db.php'; 
     $this->db = new DB(); 
    } 
} 

class Model_Main extends Model 
{ 
    public function get_data() 
    { 
     $this->db->select('news'); 
    } 
} 

자식 클래스에서 생성자를 명시 적으로 정의하지 않으면 부모 생성자가 암시 적으로 호출됩니다. 따라서이 경우 parent::__constructor() 호출이 필요하지 않습니다. 생성자에

더 : http://php.net/oop5.decon

0

$db=new DB() 부모 생성자에 그 첫 번째라고 할 수있다

class Model{ 

protected $db = null; 

public function __construct(){ 
    require_once 'app/classes/db.php'; 
    $db = new DB(); 
} 
} 

은 자녀이다.