-2

这是在 C# 语言中定义属性的方式。

在 C# 中与 PHP 不同,类属性不是简单的变量,当您设置或获取它们的值时,会调用访问器函数。因此,您可以在初始化后锁定属性不被更改。在 php 中,似乎没有函数名后跟括号,您不能调用这样的值。PHP中有没有类似的概念?

4

3 回答 3

1

还没有,但在 PHP 的未来版本中“可能”。
RFC:https
: //wiki.php.net/rfc/propertygetsetsyntax Magic_get / _set 和“重载”,是代码异味的各种情况。

于 2013-07-08T17:48:31.853 回答
0

我不明白你的意思。

但是,如果您在谈论 getter 和 setter,您可以简单地将您的 var 声明为私有并创建一个公共方法来获取值。

private $lol;
public getlol(){
   return $this->lol;
}

但是,如果您在谈论内容,则需要尝试一下:

define("MAXSIZE", 100);
于 2013-07-08T17:39:18.647 回答
0

使用__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
    }
}
于 2013-07-08T17:42:22.647 回答