Форум → Программирование → PHP для идиотов → PHP и ООП → Статические методы и свойства
Статические методы и свойства
Страницы: ← Предыдущая страница • Следующая страница →
-
2 марта 2008 г. 15:10, спустя 11 минут 34 секунды
А чего ему соответствовать? Можно в папке: session/db.php, session/file.php
Просто нужно самому решать, где тебе нужен геморрой, а где нет.
У меня все сеансы в одном месте. Если вдруг я решу, что лучше на файлах, то они будут у меня все на файлах.
Зачем мне с помощью абстракций решать абстрактные проблемы, которых в данном конкретном случае не будет? -
2 марта 2008 г. 15:42, спустя 32 минуты 8 секунд
у меня с базами чуть подругому было, кстати.
был двиг на postgress, надо было переписать на mysql, благо особо сложных запросов небыло, можно было поддержку обоих встроить.
ну и соответственно был файлег
db.php - который подключал стат класс DB<?php
$config = SYS::config('db');
require_once('db_'.$config['server'].'.php');
//print 'db_'.$config['server'].'.php'; exit;
?>
ну и соответственно ещ 2 файла с объявлением класса DB
db_mysql.php
db_pg.php
а при особой надобности и версии субд учитывать можно. -
2 марта 2008 г. 16:18, спустя 35 минут 38 секунд
т.е.
session/db.php -> class cSession
session/file.php -> class cSession
Так?
с БД так же? -
-
2 марта 2008 г. 23:13, спустя 5 часов 6 минут
c бд не так, выше написано же.
чёт туплю. как будут называться классы в файлах db_mysql.php и db_pg.php?
Вот еще простой пример, уже из практики:
class AR
{
static public function Find()
{
echo __CLASS__;
}
}
class Foo extend AR {}
Foo::Find(); -
3 марта 2008 г. 0:06, спустя 53 минуты 40 секунд
класс будет называться DB
и там, и там, только в зависимости от сеттингов будет инклюдится конкретный файл -
17 марта 2008 г. 23:42, спустя 14 дней 23 часа 35 минут
Я надеюсь это будет не некропост
ИМХО для чего статический класс в php вобще не могу понять. Это например для java надо создавать класс с константами и потом сравнивать с ними переменные, и не потому что надо, а потому что объект там это единица кода. А в php статик нужен например для паттерна синглтон.
class Singelton
{
private static $instance;
private function __construct()
{
}
static function & instance()
{
if (!isset(self::$instance))
{
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
}
$S = Singelton::instance();
а в php набор статических методов лучше делать ввиде набора отдельных функций в отдельном файле и инклудить по мере необходимости потому что объекты сильно тормозят.и там, только в зависимости от сеттингов будет инклюдится конкретный файл
а не считаете ли вы плохим тоном инклудить файлы внутри методов учитывая что и выполняться они будут в области видимости данных методов. -
17 марта 2008 г. 23:49, спустя 7 минут 37 секунд
а в php набор статических методов лучше делать ввиде набора отдельных функций в отдельном файле и инклудить по мере необходимости потому что объекты сильно тормозят.
класс и объект - немного разные вещи, отличие стат класса от синглтона как раз в том и заключается, что синглтон создаёт объект, а стат клас - нета не считаете ли вы плохим тоном инклудить файлы внутри методов учитывая что и выполняться они будут в области видимости данных методов.
и кстати инклюдится он не внутри метода :) -
18 марта 2008 г. 10:47, спустя 10 часов 57 минут 50 секунд
Ок, я вобще на пхп не пишу поэтому у меня на работе даже апача нет, но я приду домой и запущу код
class Statik {
public static sqr($i){
return $i*$i;
}
}
function sqr($i){
return $i*$i;
}
for($c=0;$c<10;$c++){
$start1 = microtime();
for($i=0;$i<1000;$i++)
Statik::sqr($i);
$stop1 = microtime();
$start2 = microtime();
for($i=0;$i<1000;$i++)
sqr($i);
$stop2 = microtime();
$time1 = array_sum(explode(" ",$stop1)) - array_sum(explode(" ",$start1));
$time2 = array_sum(explode(" ",$stop2)) - array_sum(explode(" ",$start2));
echo $time1." ".$time2;
}
думаю что вариант с статиком будет примерно на 20% дольше
ЗЫ если кому не лень проверьте и выложите -
18 марта 2008 г. 10:58, спустя 10 минут 59 секунд
мне не лень..
только я к 1000 добавил еще по нолику, для $c вместо 10 сделал 5
и после static вписал function :)
итак, результат
0.0242729187012 0.0206789970398 = 0.852
0.0238270759583 0.0205080509186 = 0.861
0.0237760543823 0.0204939842224 = 0.862
0.024307012558 0.0204939842224 = 0.843
0.0243158340454 0.0204889774323 = 0.843
15 процентов.. при 10 000 циклов -
18 марта 2008 г. 11:08, спустя 9 минут 59 секунд
вдогонку:
статическое обращение к нестатическому методу медленнее на 40%
вызов метода объекта медленнее на 8% -
18 марта 2008 г. 11:14, спустя 6 минут 8 секунд
Я прошу прощения, как я сказал я не пишу на пхп, уже.
а мои прогнозы практически подтвердились)))
ЗЫ
ghost, по поводу инклуда, прости я недосмотрел твой пример кода вначале. -
18 марта 2008 г. 11:21, спустя 7 минут 4 секунды
А теперь разделите 0,02 сек на 10 000 и поставьте третим циклом запрос к базе. И задумайтесь над тем, стоит ли об этом вообще думать.
Умножение двух чисел тоже время забирает, лучше просто return true в функциях ставить. -
18 марта 2008 г. 11:25, спустя 3 минуты 18 секунд
А теперь разделите 0,02 сек на 10 000 и поставьте третим циклом запрос к базе.
только не 0.02 а 0.002..0.004 )
и вообще APD рулит
оптимизировать надо там, где это даст практическую, а не теоретическую выгоду
обычно это действительно SQL-запросы -
18 марта 2008 г. 12:15, спустя 49 минут 44 секунды
mechanic, да ладна те.. писать надо на ф-циях, они самые быстрые.. и простые как полено.. ни те структуры ни доп заморочек типа private, свойств объекта опять таки… зато быстро..
потом правда с кодом возиццо долго, потому как ни те структуры…
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!