Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс и include, нужна помощь 
V
    Опции темы
neoks
Дата 11.8.2011, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



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

Я пытаюсь добавить внутри класса, вообшем шас покажу.

Файл ббкода.
Код

class bb_code{
    function encode($source,$html = true){
         
         include_once('parser.php'); //Файл парсера
         
         $source = preg_replace( "#\[info\s*=(.+?)\](.+?)\[/info\]#ise", "\$this->info('\\1','\\2')", $source );

         .....
    }
}


Файл parser.php.
Код

$source = preg_replace( "#\[more\s*=(.+?)\](.+?)\[/more\]#ise", "\$this->more('\\1','\\2')", $source );


Как видно файлу с парсером нужна функция $this->more() в классе bb_code
Проблема в том что создавать функцию в нутри функции нельзя, даже если я сделаю отдельную функцию от класса например просто more()

Но и в нутри класса тоже нельзя вставлять коды, только функции и переменные.

Пока не знаю что делать, только один вариант приходит это тупо за пределами класса инклюдить еше один файл с функциями  smile 
PM MAIL   Вверх
Absinthe
Дата 11.8.2011, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: 5
Всего: 11



1. Занимаешься фигней. Возьми нормальный готовый парсер.
BB-коды не делаются регексп-заменами. Это путь к XSS.

2. Продумай архитектуру.
class BbParser {}, abstract class BbCode {}, class BBcodeItalic extends BbCode {}...

3. Через гoвнокод твоя проблема решается с помощью __call.

4. Смотри пункт 1.
PM MAIL   Вверх
neoks
Дата 11.8.2011, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



Цитата(Absinthe @  11.8.2011,  10:58 Найти цитируемый пост)
 __call

В последние время начал встречать классы с public, private и тд. , блин как это все называется и где моно найти статьи про все это, а то все это для меня впервые  smile 


Цитата(Absinthe @  11.8.2011,  10:58 Найти цитируемый пост)
class BbParser {}, abstract class BbCode {}, class BBcodeItalic extends BbCode {}

А моно пример, я шас вообше не шарю что тут происходит, и если не трудно показать как потом можно будет подключить дополнительные парсеры.
PM MAIL   Вверх
Absinthe
Дата 11.8.2011, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: 5
Всего: 11



Цитата

В последние время начал встречать классы с public, private и тд. , блин как это все называется и где моно найти статьи про все это, а то все это для меня впервые
 Учебник по основам PHP. Я серьезно, кстати.
Если знаешь английский - то от Zend прочитай, который к сертификации готовит.

Цитата

А моно пример, я шас вообше не шарю что тут происходит, и если не трудно показать как потом можно будет подключить дополнительные парсеры.
 Теоретическое любопытство утолит учебник, практическую необходимость - применение готового парсера.

Добавлено через 42 секунды
А если не знаешь английский - то учить придется все равно.
PM MAIL   Вверх
neoks
Дата 12.8.2011, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 5.7.2010

Репутация: нет
Всего: 1



Цитата(Absinthe @  11.8.2011,  23:57 Найти цитируемый пост)
А если не знаешь английский - то учить придется все равно. 

Да вот как раз знаю на базе чтения  smile 
Цитата(Absinthe @  11.8.2011,  23:57 Найти цитируемый пост)
Учебник по основам PHP. Я серьезно, кстати.

Проблема найти хороший, яж php учил самостоятельно, то там посмотрел то там вот и теперь знаю не плохо, но когда смотриш чужии коды начинаеш встречать фунцкии и методы которые видеш в первые.

У меня свой метод изучения, я сначала смотрю код а затем в мыслях разбираю код по частям и смотрю как все происходит и зачем, результат не стал себя ждать.  smile 

Нашёл неплохую документацию про классы, лан пошёл смотреть и немного подучу.

PM MAIL   Вверх
Absinthe
Дата 12.8.2011, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 4.5.2011

Репутация: 5
Всего: 11



Цитата

яж php учил самостоятельно
 А есть другие варианты?   smile 

Цитата

Нашёл неплохую документацию про классы, лан пошёл смотреть и немного подучу.
 Надеюсь, за авторством Zend?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.