автолоадер на лету создает пустой class SomeClass extends SomeClass_Core {}
в 3.0 уже не так вроде
Форум → Программирование → PHP для идиотов → Статические классы
Сен. 19, 2009, 8:40 п.п., спустя 2 часа 12 секунд
автолоадер на лету создает пустой class SomeClass extends SomeClass_Core {}
Сен. 19, 2009, 10:51 п.п., спустя 2 часа 11 минут 10 секунд
Сен. 20, 2009, 7:29 д.п., спустя 5 часов 16 минут 2 секунды
Сен. 30, 2009, 8:42 д.п., спустя 10 дней 1 час 13 минут
<?php
class bench {
public function a() { return 1; }
public static function b() { return 1; }
// —
public function c() {
$s = microtime(1);
for ($i = 0; $i < 100000; $i++) $this->a();
return microtime(1) - $s;
}
public static function d() {
$s = microtime(1);
for ($i = 0; $i < 100000; $i++) self::b();
return microtime(1) - $s;
}
}
header('Content-type: text/plain');
$s = microtime(1);
for ($i = 0; $i < 100000; $i++) bench::a();
$e = microtime(1);
echo "Dynamic Static Method:\t".($e - $s)."\n";
$s = microtime(1);
for ($i = 0; $i < 100000; $i++) bench::b();
$e = microtime(1);
echo "Declared Static Method:\t".($e - $s)."\n";
// —
$o = new bench;
$s = microtime(1);
for ($i = 0; $i < 100000; $i++) $o->b();
$e = microtime(1);
echo "True Dynamic Call:\t".($e - $s)."\n";
// – This is not allowed in PHP 5.2:
// $s = microtime(1);
// for ($i = 0; $i < 100000; $i++) $o::a();
// $e = microtime(1);
// echo "Strange Static Call:\t".($e - $s)."\n";
echo "Intern Dynamic Method:\t".$o->c()."\n";
echo "Intern Static Method:\t".bench::d()."\n";
Dynamic Static Method: 0.317136049271
Declared Static Method: 0.133683204651
True Dynamic Call: 0.107385873795
Intern Dynamic Method: 0.103450059891
Intern Static Method: 0.0944528579712
Сен. 30, 2009, 12:32 п.п., спустя 3 часа 50 минут 8 секунд
если метод по сути статический, не забывайте писать слово static
Сен. 30, 2009, 12:34 п.п., спустя 1 минуту 24 секунды
Сен. 30, 2009, 12:41 п.п., спустя 3 минуты 33 секунды
Пожалуйста, авторизуйтесь, чтобы написать комментарий!