Удаление функций и классов
Не подскажете возможно ли удалять(анрегистрить) функции и классы в PHP. Весь инет перерыл - ненашел. :(
Запретить использование какого либо класса в коде можно на уровне интерпретатора, читай php.ini ;)
Проблема в следующем. Надо просканить пхп файлы и найти названия классов и/или функций.
Легче это сделать при помощи самого пхп инкладом и поиском новых классов и названий функции через get_declared_classes & get defined_functions, но если функции и классы повторяются - фатал еррор.
Ну вижу что нельзя программно. Тогда другой вопрос. Может кто знает хитрое регулярное выражение которое выдиляло бы правильную php строку в "двойных кавычках"?
приведу сразу с ходу пример:
$str = "фывафыва\"sdfasdf{$this->assd}asd{$pdw->wd["wd\"{w}d"]}апd";
является корректно написанной строкой. но регулярным выражением не могу ее выделить.... о первой до последней кавычки.
П.С. Сканинг классов и функций нужен для ядра модульного движка сайта. Рядом кстати видел темку да и не один десяток сайтов перерыл. Такой задумки как я хочу сделать еще нигде нет.
П.П.С. И не говорите что __autoload используй и не ломай голову. при не нахождении класса - фатал еррор, что в моем варианте не годится. я же пишу свой код что бы при ненахождении определенного класса/функции просто выдавало false. тем самым если в модуле используются функции модулей которые не установлены - просто будет сообщение о том что модулю требуются определенные модули для корректной работы.
Это решается использованием include_once и require_once. И, имхо, повторяться в одном проекте имена классов и функций не должны.
Вообще все целиком выделить?
$matches = array();
preg_match_all('#".*"#is',$str,$matches,PREG_SET_ORDER);
Вообще все целиком выделить?
$matches = array();
preg_match_all('#".*"#is',$str,$matches,PREG_SET_ORDER);
1. Именно что проект не 1. В моем движке классы могут повторятся, НО в зависимости от условий выбираются определенные. Пример: Есть модуль форума. У него соответсвенно есть модули "отображения". И эти модули пишутся разными людьми. Ядру сайта начхать как называются классы в этих модулях. Но если юзер выбрал ядро отображения форума1 (само ядро форума 1но =)), то грузятся классы и функции 1го ядра отображения. Если 2ой - то вторые.
Тем самым например, можно написать 2 разных движка форума и к ним по несколько движков отображения. Естественно классы движков форумов и движков отображений не должны пересекаться.
2. Это я и сам могу написать =) Мне надо что бы он не все подряд брал а именно корректную строку.
пример 2.
1 "фывафыва\"sdfasdf{$this->assd}asd{$pdw->wd["wd\"{w}d"]}апd" 2 "sdfsdfasdfadfs" 3
если применить хитрый запрос он должен выдать первую строку и вторую не цепляя 1,2,3
П.П.С. И не говорите что __autoload используй и не ломай голову. при не нахождении класса - фатал еррор
А это уже как сам напишешь... Ты значит организовал так, что у тебя вылетает ошибка, это не значит, что нельзя организовать по другому. Есть мысл задуматься о дизайне данного приложения вообще.