Pull to refresh

Comments 18

интересно, нужно будет попробывать :)
спасибо большое!
теги, наверное, стоит разделить запятыми?
Когда в Виллабаджо используют Gems/Maven, в Вилларибо всё продолжают копировать файлы.
нет, я конечно всё понимаю, но если вы на рельсах, то зачем вы пишите комментраии в блог пхп фреймворка, или это вы так мягко напоминаете пхпшникам о существовании других языков/технологий ))
Ваши теги сломали хабр :)
Теперь в облаке тэгов «Codeigniter php pear» имеет класс w10, а все остальные — w1 или w2.
зачем городить какойто класc для прелоада и создавать объект через eval.
когда можно просто написать например так:

require_once(«DB.php»);
$db = DB:: factory(«...»);

добавив пути соответсвенно

Этот код тогда делается 1ой строчкой, становится более читабельный…
код подразумевает одноуровневую вложенность, в случае, например, с пэкеджем Spreadsheet_Excel_Writer — не работает
у этого решения два минуса:
  • Невозможность загрузить неодноуровневую библиотеку (к примеру XML_Feed_Parser)
недописал — отправилось:
— Невозможность загрузить неодноуровневую библиотеку (к примеру XML_Feed_Parser)
— Использование eval при инстанцировании
— Имя библиотеки разбито на две части — то есть в для вызова XML_RSS надо писать pearloader('XML', 'RSS'), почему нельзя сразу pearloader('XML_RSS') и опять же для нескольких уровней не прокатит.

Мой вариант:
class Pearloader {
    function load($package) {
	// parse package
	$parse = explode('_', $package);
	
	// class filename
	$class = $parse[count($parse)-1];
	
	// dir with class
	unset($parse[count($parse)-1]);
	$dir = implode('/', $parse);
	
	//die($dir);
	
    require_once $dir. '/'. $class. '.php';
	
	$args = func_get_args();
	
    return call_user_func_array(
        array(new ReflectionClass($package), 'newInstance'),
         array_slice($args, 1)
    );
    }
}


Отдельным файлом
Sign up to leave a comment.

Articles