Peki, tam olarak değil, ama burada bir örnektir. Herkes B ve C arasındaki farkı açıklayabilir misiniz? Nasıl dinamik olarak sadece nitelik tanımı değerini ayarlamak yerine bir değerini ayarlamak için sihirli bir işlevi kullanmak için daha hızlı olabilir?
İşte bazı kod:
[root@vm-202-167-238-17 ~]# cat test.php; for d in A B C; do echo "------"; ./test.php $d; done;
#!/usr/bin/php
<?php
$className = $argv[1];
class A
{
public function __get($a)
{
return 5;
}
}
class B
{
public $a = 5;
}
class C
{
public function __get($a)
{
$this->a = 5;
return 5;
}
}
$a = new $className;
$start = microtime(true);
for ($i=0; $i < 1000000; $i++)
$b = $a->a;
$end = microtime(true);
echo (($end - $start) * 1000) ." msec\n";
------
598.90794754028 msec
------
205.48391342163 msec
------
189.7759437561 msec