переменная перед PAAMAYIM_NEKUDOTAYIM

переменная перед PAAMAYIM_NEKUDOTAYIM

PHP:
$database = 'mysql';
$database :: Singleton();
Почему parse error?
И так ошибка:
PHP:
$database = 'mysql';
{$database} :: Singleton();
Не хочу гадать.
 

fixxxer

К.О.
Партнер клуба
так можно делать только начиная с php 5.3 где появился late static binding.
 
жаль, конечно. тогда еще вопрос: насколько стабильна php 5.3.x чтобы использовать на хостинге в реальных условиях и стоит ли вводить изменения в скрипты учитывая новшества версии php 5.3.x?

не в понтах дело, а в неймспейс. )
 

fixxxer

К.О.
Партнер клуба
но потестировать код на 5.3 неплохо было бы - тем более недавно бета вышла.

а то не будет никто тестить и получим такую же задницу как было с php 5.0 :)
 
zerkms
не знал. прочитал. В моем случае:

PHP:
call_user_func($database . ' :: Singleton()');
Спасибо, буду знать.
Только у меня одно "но", что это не очень удобно. Прочитал статью о автолоад на дклаб.ру и решил переделать все на нем:
PHP:
function __autoload($class_name)
   {
      include(DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . $class_name . DIRECTORY_SEPARATOR . $class_name . '.config.php');
      include(DIRECTORY_SEPARATOR . 'classes' . DIRECTORY_SEPARATOR . $class_name . DIRECTORY_SEPARATOR . $class_name . '.class.php');
   }
core :: Singleton();
// $database :: Singleton(); // было бы удобнее чем
call_user_func($database . ' :: Singleton()');
Может есть альтернатива или не так уже критично НЕ использовать автолоад (хотя показателям статьи я поверил).
 

zerkms

TDD infected
Команда форума
для таких вещей придумали фабрики, в которых как раз и скрывается "неудобный" код.
 

zerkms

TDD infected
Команда форума
fixxxer
и? чем предложенный тобой вариант с LSB в принципе отличается от?
 

fixxxer

К.О.
Партнер клуба
не обращай внимания

это эмоциональное высказывание вызвано размышлениями об интерналсах php, навеянными сей строчкой. :)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
fixxxer
аха, eval класса :)

Curly-fingers
а чем плоха фабрика-то?
$DB = DBdriver::getInstance('mysql'); ?
Кстати, чем не нравится PDO, где это уже сделано?
 
Сверху