0 Пользователей и 1 Гость просматривают эту тему.
  • 11 Ответов
  • 3383 Просмотров
*

iT)ZevS(

  • Захожу иногда
  • 177
  • 31 / 2
Как создаются эти классы?
Вот допустим в стандартных компонентах есть куски:
Код
function saveBanner( $task ) {
global $database;

$row = new mosBanner($database);

function saveContact( $option ) {
global $database;

$row = new mosContact( $database );
Эта же конструкция (ex. new mosContact( $database ); ) используется для выхода из режима редактирования, например:
Код
function cancelEditBanner() {
global $database;

$row = new mosBanner($database);
$row->bind( $_POST );
$row->checkin();
интересует конструкция $row = new ... ($database);
также хотелось узнать назначение строки
Код
require_once( $mainframe->getPath( 'class' ) );
« Последнее редактирование: 11.09.2008, 22:35:32 от iT)ZevS( »
*

iT)ZevS(

  • Захожу иногда
  • 177
  • 31 / 2
Re: Классы в бакенде компонента
« Ответ #1 : 11.09.2008, 22:02:34 »
Physicist, на тебя как всегда надежда ;)
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Классы в бакенде компонента
« Ответ #2 : 11.09.2008, 22:40:42 »
Не очень понятен сам вопрос "как создаются"... тебя интересует техническая сторона реализации создания экземпляра класса?

строка:

Код: php
require_once( $mainframe->getPath( 'class' ) );

подключает файл со следующим именем: имякомпонента.class.php
Т.е. если компонент называется datsogallery, то такая строка подключит файл datsogallery.class.php
*

iT)ZevS(

  • Захожу иногда
  • 177
  • 31 / 2
Re: Классы в бакенде компонента
« Ответ #3 : 11.09.2008, 22:44:29 »
Не очень понятен сам вопрос "как создаются"... тебя интересует техническая сторона реализации создания экземпляра класса?
мне нужно в своем компоненте сделать аналонично. например выйти из редактирования. как использовать конструкцию $row = new ... ($database); ?
строка:

Код: php
require_once( $mainframe->getPath( 'class' ) );

подключает файл со следующим именем: имякомпонента.class.php
Т.е. если компонент называется datsogallery, то такая строка подключит файл datsogallery.class.php
в компонентах com_banner и др. нет .class.php а строка есть.
*

Physicist

  • Глобальный модератор
  • 973
  • 190 / 0
  • Рябов Денис
Re: Классы в бакенде компонента
« Ответ #4 : 11.09.2008, 22:52:38 »
Ну почему сразу на меня? Тут на форуме специалистов много.
А у меня времени мало.

Самый простой ответ был бы: «не обращай внимания, пиши как тебе удобно, можно вообще без классов обойтись». Но более правильный ответ всё же — использование классов-наследников mosDBTable позволяет облегчить задачу переноса данных из заполненной пользователем формы в БД (через методы bind/check/store). Подробно описывать нет времени, но суть должна быть вполне понятна из исходников тех классов, которые ты привел (mosBanner, mosContact, mosContent, и т.д.), а также из комментариев к методам класса mosDBTable (он определяется в /includes/database.php, кажется).

$mainframe->getPath( 'class' ) «как правило» возвращает путь к файлу /components/com_<comp>/<comp>.class.php, где <comp> — это имя текущего компонента ($option) без начальных «com_». Почему «как правило», какие могут варианты, и какие еще параметры принимает метод getPath — см. в исходниках методов _setAdminPaths и getPath в /includes/joomla.php
« Последнее редактирование: 11.09.2008, 22:55:41 от Physicist »
*

yAnTar

  • Захожу иногда
  • 296
  • 81 / 3
Re: Классы в бакенде компонента
« Ответ #5 : 11.09.2008, 23:15:30 »
Насчет mosDBTable - посмотри
здесь
Firefox the best, Google the best, jQuery the best.
yAnTar блог
*

iT)ZevS(

  • Захожу иногда
  • 177
  • 31 / 2
Re: Классы в бакенде компонента
« Ответ #6 : 11.09.2008, 23:20:38 »
Ну почему сразу на меня? Тут на форуме специалистов много.
А у меня времени мало.
в том и дело что помочь по таким вопросам могут единицы на форуме, которые как правило без дела не сидят. А ты, потому что решил мои последние 3-4 топика :)
Насчет mosDBTable - посмотри
здесь
да это я все прочел. только там задается класс
Код
class xTable extends mosDBTable {
 
        var $id=null;//первичный ключ
        var $name=null;//имя записи
 
        /**
        * Конструктор класса.
        */
        function myTable( &$db ) {
                $this->mosDBTable( '#__xtable', 'id', $db );
        }
 }
а в стандартных я этого не вижу... там сразу $param = new xTable( $database );

Ищу хвосты создания класса компонента com_banner
« Последнее редактирование: 11.09.2008, 23:26:46 от iT)ZevS( »
*

era

  • Администратор
  • 1588
  • 391 / 5
  • В туалете лучше быть пользователем, чем админом.
Re: Классы в бакенде компонента
« Ответ #7 : 11.09.2008, 23:30:24 »
а в стандартных я этого не вижу... там сразу $param = new xTable( $database );
А они сразу в includes/joomla.php прописаны
*

era

  • Администратор
  • 1588
  • 391 / 5
  • В туалете лучше быть пользователем, чем админом.
*

iT)ZevS(

  • Захожу иногда
  • 177
  • 31 / 2
Re: Классы в бакенде компонента
« Ответ #9 : 11.09.2008, 23:33:05 »
А они сразу в includes/joomla.php прописаны
не нашел прямого указания на com_banner например. Там все решают методы _setAdminPaths и getPath и у меня пока не получается подружить их со своим компонентом...
*

iT)ZevS(

  • Захожу иногда
  • 177
  • 31 / 2
Re: Классы в бакенде компонента
« Ответ #10 : 11.09.2008, 23:34:03 »
<joomla>/components/com_banners/banners.class.php
ну нифигасе развязочка :) + всем. дальше копаю :)
*

Physicist

  • Глобальный модератор
  • 973
  • 190 / 0
  • Рябов Денис
Re: Классы в бакенде компонента
« Ответ #11 : 11.09.2008, 23:34:32 »
класс mosBanner объявляется в /components/com_banners/banners.class.php
mosContact — в /components/com_contact/contact.class.php

Подключаются эти *.class.php файлы к компоненту как раз через require_once($mainframe->getPath('class'))

А в joomla.php объявляются только частоиспользуемые mosContent, mosCategory, mosSection, mosUser и т.д.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вопрос по нагрузке на сервер

Автор dealerbee

Ответов: 1
Просмотров: 1525
Последний ответ 22.09.2009, 23:02:04
от HerrOber
Добавить функцию вводного текста во фронm

Автор HerrOber

Ответов: 2
Просмотров: 1588
Последний ответ 31.08.2009, 15:18:07
от HerrOber
Музыка на фоне. КАК?

Автор xander kej

Ответов: 8
Просмотров: 3289
Последний ответ 18.08.2009, 10:25:01
от xander kej
модуль FlyMod

Автор Death

Ответов: 1
Просмотров: 3079
Последний ответ 29.04.2009, 14:04:45
от pitzoom
Вставка флеш банера в ArtBannersPlus?

Автор forward

Ответов: 1
Просмотров: 1787
Последний ответ 19.03.2009, 14:16:46
от bestel