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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> загрузка классов 
V
    Опции темы
feosr
Дата 1.11.2008, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Решил написать загрузчик модулей, но пока у меня проблема в следующем:

допустим пользователь ввел ....../index.php/blog/post/1154/
Есть класс для обработки строки запроса и формировании массива сегментов.
получается массив скажем такой:
Код

$url->segments = array(
      0 => 'blog',
      1 => 'post',
      2 => '1154',
);


ну это просто... Хотелось сделать какнить так:
index.php/class/function/id/

однако встают следующее проблемы:
если незадана функция с айди, то должно запускаться функция прописанная в классе blog по умолчанию. Я это делаю через метод Blog(), однако в случае присутствия вызывается не только основной метод но и то что мы указали.
Как вызывать только то что надо?
PM MAIL WWW ICQ   Вверх
ksnk
Дата 1.11.2008, 19:57 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



feosr, Чпу пока можно отложить... на начальном этапе оно вредно. Пусть строка адресная так и выглядит
?mod=blog&func=post&id=1154. 
Потом, когда мясо заработает, выводить ссылки в Чпу -виде совсем несложно, на самый крайний случай ob_ - функциями вывод просканировать... Разруливать - .htacces'ом...

Итого - если есть параметр mod - ищем класс $_GET['mod'], иначе - дефолтный класс - MAIN
Если есть параметр func - ищем в классе функцию func.
Остальные параметры должна добыть из адресной строки сама функция. 






--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
feosr
Дата 2.11.2008, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



эм.... ненашел ничего что мне бы помогло)

У меня уже реботают все 3 варианта (без ЧПУ, с мод реврайтом и с изврасченским ЧПУ). Однако проблема то была в запуске класса)) класс скажем так выглядит:

Код

class blog{

var $result = array();

function blog(){
echo 'main page of blog';
}

function post($id){
echo 'Post '.$id.' page of blog';
}

}


если неуказана функция - то все гуд, выводится функция blog() по умолчанию при назначении класса. А если указана вызывается еще и функция пост. Тобиш выполнение функции блог неесть хорошо в этой ситуации))
PM MAIL WWW ICQ   Вверх
ksnk
Дата 2.11.2008, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



feosr
В конструкторе зачем выводится страница? Ее нужно выводить в отдельной функции - Def, к примеру.

ДвЕжог, работающий таким образом может выглядеть как-то так
Код

class main_class{

   function Def (){
     return 'Default page <br><a href="?func=news">news</a><br><a href="?mod=guestbook">gb</a>';
   }
   function news(){
     return 'News page';
  }
}

class guestbook{

   function Def (){
     return 'Default page for guestbook';
  }
}

$mod=$_GET['mod'];
$func=$_GET['func'];

if(!class_exists($mod)) $mod='main_class' ;

$module=&new $mod();

if(is_callable(array($module,$func)))
    echo $module->$func();
else
    echo $module->Def();


Добавлено через 2 минуты и 7 секунд
еще фенечка - функции не должны выводить страницы echo'м. Это дело двигла. Потому, что он (двигл) может как-нибудь и по другому захотеть использовать эти странички, упаковать в json структуру, отконвертировать в utf-8 или еще чего


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
feosr
Дата 2.11.2008, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



хотелось бы без необходимости использовать что-то типа deff() ну да ладно, раз это единственный вариант....
-------
неответил ты мне на ответ, но всеравно благодарен.
PM MAIL WWW ICQ   Вверх
ksnk
Дата 2.11.2008, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата

неответил ты мне на ответ

Цитата

Цитата

Я это делаю через метод Blog(), однако в случае присутствия вызывается не только основной метод но и то что мы указали.

Цитата

В конструкторе зачем выводится страница? Ее нужно выводить в отдельной функции - Def, к примеру.


 На какой еще ответ я не ответил? smile Если конструктор класса занят выводом какой-то информации, то очевидно она будет всегда выводится, независимо от того, нужна она или нет. Так уж они, конструкторы, устроены...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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