这是在 C# 语言中定义属性的方式。
在 C# 中与 PHP 不同,类属性不是简单的变量,当您设置或获取它们的值时,会调用访问器函数。因此,您可以在初始化后锁定属性不被更改。在 php 中,似乎没有函数名后跟括号,您不能调用这样的值。PHP中有没有类似的概念?
还没有,但在 PHP 的未来版本中“可能”。
RFC:https
:
//wiki.php.net/rfc/propertygetsetsyntax Magic_get / _set 和“重载”,是代码异味的各种情况。
我不明白你的意思。
但是,如果您在谈论 getter 和 setter,您可以简单地将您的 var 声明为私有并创建一个公共方法来获取值。
private $lol;
public getlol(){
return $this->lol;
}
但是,如果您在谈论内容,则需要尝试一下:
define("MAXSIZE", 100);
使用__get 和 __set 魔术方法可以在 PHP 中使用 get 和 set方法(尽管实现与 C# 不同)
class A {
protected $test_int;
function __construct() {
$this->test_int = 2;
}
function __get($prop) {
if ($prop == 'test_int') {
echo 'test_int get method<br>';
return $this->test_int;
}
}
function __set($prop, $val) {
if ($prop == 'test_int') {
echo 'test_int set method<br>';
//$this->test_int = $val;
}
}
}
$obj = new A();
$obj->test_int = 3; //Will echo 'test_int set method'
echo $obj->test_int; //Will echo 'test_int get method' and then the value of test_int.
如果您想“锁定”一个属性的值,只需执行以下操作:
function __set($prop, $val) {
if ($prop == 'test_int') {
//Do nothing
}
}