有如下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