|
直接上代码:
- <?php
- class Person
- {
- public $sex;
- public $name;
- public $age;
-
- public function __construct($name="", $age=25, $sex='男')
- {
- $this->name = $name;
- $this->age = $age;
- $this->sex = $sex;
- }
-
- public function __invoke() {
- echo '这可是一个对象哦';
- }
-
- }
-
- $person = new Person('小明'); // 初始赋值
- $person();
查看运行结果:
- 这可是一个对象哦
当然,如果你执意要将对象当函数方法使用,那么会得到下面结果:
- Fatal error: Function name must be a string in D:phpStudyWWWtestindex.php on line 18
十三、 __set_state(),调用var_export()导出类时,此静态方法会被调用。
作用:
自 PHP 5.1.0 起,当调用 var_export() 导出类时,此静态方法会被自动调用。
参数:
本方法的唯一参数是一个数组,其中包含按 array('property' => value, ...) 格式排列的类属性。
下面我们先来看看在没有加 __set_state() 情况按下,代码及运行结果如何:
上代码:
- <?php
- class Person
- {
- public $sex;
- public $name;
- public $age;
-
- public function __construct($name="", $age=25, $sex='男')
- {
- $this->name = $name;
- $this->age = $age;
- $this->sex = $sex;
- }
-
- }
-
- $person = new Person('小明'); // 初始赋值
- var_export($person);
看结果:
- Person::__set_state(array( 'sex' => '男', 'name' => '小明', 'age' => 25, ))
很明显,将对象中的属性都打印出来了
加了 __set_state() 之后:
继续上代码:
- <?php
- class Person
- {
- public $sex;
- public $name;
- public $age;
-
- public function __construct($name="", $age=25, $sex='男')
- {
- $this->name = $name;
- $this->age = $age;
- $this->sex = $sex;
- }
-
- public static function __set_state($an_array)
- {
- $a = new Person();
- $a->name = $an_array['name'];
- return $a;
- }
-
- }
-
- $person = new Person('小明'); // 初始赋值
- $person->name = '小红';
- var_export($person);
(编辑:佛山站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|