在php中创建一个类时,这两者之间的区别是什么:
class Search
function __construct()
{
$this->variable1= 1234;
}
}
和
class Search
private $variable1;
$variable1=1234;
function __construct()
{
}
}
如果我需要跨越不同的方法访问一个值,那么我选择哪种方法会有什么不同?
谢谢
答案 0 :(得分:5)
对象和类变量之间的区别在于如何访问它们。
$obj->var
class::$var
您的班级定义应为:
class Search {
static $variable = 2; // only accessible as Search::$variable
}
对战:
class Search2 {
var $variable = "object_prop";
}
您使用var
或public
或private
访问修饰符不是使变量成为对象属性的原因。决定因素是它没有被声明为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)
在第一种方法中,变量未声明为私有,因此您可以访问该变量 从对象外面, 而在你的第二种方法中,只允许在类中使用