有如下4个代码示例,你认为他们创建对象,并且获得成员变量的速度排序是怎样的?1:将成员变量设置为html' target='_blank'>public,通过赋值操作给成员变量赋值,直接获取变量 复制代码 代码如下: ?php class Foo { public $id; } $data = new Foo; $data- id = 10; echo $data- ?
2:将成员变量设置为public,通过构造函数设置成员变量的值,直接获取变量 复制代码 代码如下: ?php class Foo2 { public $id; public function __construct($id) { $this- id = $id; } }$data = new Foo2(10); echo $data- ?
3:将成员变量设置为protected,通过构造函数设置成员变量的值,通过魔术方法获取变量 复制代码 代码如下: ?php class Foo3 { protected $id; public function __construct($id) { $this- id = $id; }public function getId() { return $this- } } $data = new Foo3(10); echo $data- getId(); ?
4:将成员变量设置为protected,通过构造函数设置成员变量的值,通过成员方法获取变量 ?php class Foo4 { protected $id; public function __construct($id) { $this- id = $id; } public function __get($key) { return $this- } } $data = new Foo4(10); echo $data- ? 按执行速度快慢排序: 1243 咱们先看其opcode: 1: 复制代码 代码如下: 1 ZEND_FETCH_CLASS4 :4 'Foo' 2 NEW $5:4 3 DO_FCALL_BY_NAME0 4 ASSIGN !0, $5 5 ZEND_ASSIGN_OBJ!0, 'id' 6 ZEND_OP_DATA10 7 FETCH_OBJ_R$9!0, 'id' 8 ECHO $9