php OOP类变量vs对象变量

时间:2011-03-23 14:50:11

标签: php oop

在php中创建一个类时,这两者之间的区别是什么:

class Search 

    function __construct()
    {

        $this->variable1= 1234;      

    }
}

class Search 

    private $variable1;

$variable1=1234;

    function __construct()
    {

    }
}

如果我需要跨越不同的方法访问一个值,那么我选择哪种方法会有什么不同?

谢谢

4 个答案:

答案 0 :(得分:5)

对象和类变量之间的区别在于如何访问它们。

  • 对象变量:$obj->var
  • 类变量:class::$var

您的班级定义应为:

class Search {
    static $variable = 2;   // only accessible as Search::$variable
}

对战:

class Search2 {
    var $variable = "object_prop";
}

您使用varpublicprivate访问修饰符不是使变量成为对象属性的原因。决定因素是它没有被声明为static,因为这会使它只能作为类变量访问。

答案 1 :(得分:2)

基本上是相同的,但如果你在调用之前没有声明变量/属性,你会得到一个警告,说明变量不存在。

最佳做法是这样做:

class Search {

  private $_variable1;

  function __construct() {
    $this->_variable1=1234;
  }

}

注意:私有变量仅适用于声明它们的类。

答案 2 :(得分:2)

对于明星(仅针对更好的做法),如果方法或属性是私有/受保护的,请使用 _ (下划线),因此您的代码应如下所示:

class Search 
{
    private $_variable1 = 1234;

    //example usage
    public function someMethod()
    {
        if ( $this->_variable1 == 1234 ) {
           //do smth
        }
    }
}

答案 3 :(得分:1)

在第一种方法中,变量未声明为私有,因此您可以访问该变量 从对象外面, 而在你的第二种方法中,只允许在类中使用