类变量 - 何时使用它们

时间:2011-10-04 16:31:29

标签: php oop

如何知道何时将变量放入类而不是类函数内?例如 - 该数据库类由其子类实例化,并且还实例化其子类。它没有类变量。

class database extends one_db      
{
    function __construct()  
    {
        one_db::get();
    }

    public function pdo_query()
    {
    }

    public function query($query) 
    {
        return one_db::$db->query($query);
    }

    private function ref_arr(&$arr)  // pdo_query will need this later. 
    { 
        $refs = array(); 
        foreach($arr as $key => $value) 
        {  
            $refs[$key] = &$arr[$key];
        } 
        return $refs;
    }   
}

我怎么能像这样拉出$ query变量

class database extends one_db      
{
    protected $query;

    function __construct()  
    {
        one_db::get();
    }

    public function pdo_query()
    {
    }

    public function query($query) 
    {
        $this->query=$query
        return one_db::$db->query($this->query);
    }

    private function ref_arr(&$arr)  // pdo_query will need this later. 
    { 
        $refs = array(); 
        foreach($arr as $key => $value) 
        {  
            $refs[$key] = &$arr[$key];
        } 
        return $refs;
    }   
}

我认为这只需要在多个类函数之间共享变量时才能完成,但我不太确定。

2 个答案:

答案 0 :(得分:1)

在类/对象中使用的变量有3种类型:

  1. 实例变量 - 用作对象范围的变量,所有方法都应该有权访问。保存数据库连接对于实例变量是一个好主意。
  2. 静态变量 - 在不需要对象实例时使用。某种静态计数器通常是静态变量。
  3. 方法变量 - 仅包含在其函数中。内部有条理变量应该属于这一类。
  4. 根据您的需要做出选择。

答案 1 :(得分:0)

将实例变量用于要与对象关联的状态。如果您希望DB类记住最后一个查询,请将其存储为类的一部分。否则,只需将其传递给父类。