Программирование > PHP

Внедрение PHP кода в класс из MySQL

(1/3) > >>

Altaxar:
Появившуюся задачу можно разделить на 2 части.
1) У меня есть класс(обьект) в нем функция, мне нужно както получить код из этой функции, и записать в MySQL в виде строки (как работать с MySQL я знаю :) )
2) Получаю строку из MySQL и необходимо добавить в обьект данную функцию.

Все очень глупо выглядит. но действия выглядит так:
1 пункт выполняется в последствии какогото события.
а 2 пункт при новом старте скрипта, и у меня нету возможности прикрепить данную функцию через include .

в 1 пункте склоняюсь к парсеровки класса, регулярами.
У кого какие идеи есть на счет этого?

CGVictor:
Altaxar
Гм...уже с ходу - не думаю, что есть какое-то красивое и правильное решение.

Пока что на ум приходит - да, парсить код при помещении его в mysql, а наоборот - создание наследника класса на лету и include его к коду. Но это только в теории. На практике - грабли...

andymc:
1. Если укажете зачем в целом это надо, может быть мы вам дадим другое решение этого вопроса.
2. Для парсинга кода, если вы на php5, попробуйте использовать Reflection (Глава 19. Классы и объекты (PHP 5))

CGVictor:
andymc
Кстати, да. Reflection.

http://ru2.php.net/manual/ru/language.oop5.reflection.php

Но рефлектор, имхо, еще такая сырость...

Altaxar:
andymc
Наверно я слишком строго написал то, что мне надо в пункте 2.
поэкспериментировал и решение найдено.

Для чего мне это надо? все просто, пишу свою систему(движок) уже можно сказать готов(осталось пару корректировок и база стандартных скриптов но это дела времени).

Идея в том, что определение подгружаемых классов определяется в несколько этапов, но все определяется до создание этих классов, так как у меня классы обрабатываются не последовательно а параллельно.
И для гибкости нужны аспекты определяющие классы которые еще нужны в данный момент. Вот и получается что класс еще не определен а аспект надо запустить, вот я и решил их в MySQL хранить.

У меня сейчас сделано просто, есть переменная в классе в которой строкой присвоен данный аспект, и он записывается в MySQL если его там еще нету, так что на скорость данного действия мне всеравно.
Затем при старте они запускаются при помощи создание функции на лету.

Но не удобно писать аспект строкой, поэтому хочу сделать парсинг данного класса.
Во вторых для удобства написание данного аспекта желательно готовые функции, тоесть как класс для аспекта.

Решение такое: создаем функцию на лету и передаем сылку на данный обьект. пробывал как переменную $this (ошибка), но заменив на $my_this все заработало, и в парсинге заменить $this на $my_this. и теперь все ок.
Если у кого есть более интересное решение, буду благодарен.
Reflection. спасибо за подсказку, почитаю.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии