[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как указать ссылки на методы класса
Austral
Добрый день, второй день воюю с CodeIgniter, не могу выполнить условия задачи.
Вопрос собственно даже по ООП..

Есть такая структура контроллера, но я не уверен что она верная :)


class Imports extends Controller {

function imports ()
{
parent::Controller();
}


function index()
{
тут должны жить ссылки на методы csv и xml
}

function csv ()
{

}



function xml ()
{

}

}


По заданию нужно: Создать контроллер для импорта дефолтный метод которого будет содержать 2 ссылки на методы xml, csv (Create an imports controller the default method of which should contain 2 links to the process method with types of either CSV or XML.)

Сами парсеры я написал и все работает прекрасно если вызывать imports/csv или imports/xml
Но по условию, ссылки на них нужно поселить в function index() { }
Моих скудных познаний ООП, никак не хватает чтобы понять что это должны быть за ссылки?

Правильно ли я понимаю что эти два метода xml, csv нужно как то спрятать (ну private к прмеру) чтобы они были не доступны по адресам imports/csv или imports/xml если на них нет ссылок в function index() { } ?

Заранее спасибо за ответ!



Спустя 2 часа, 38 минут, 5 секунд (20.11.2010 - 10:20) linker написал(а):
Обычно перегрузка методов делается через __call(), но если через некий index(), то тогда данный метод должен принимать хотя бы один параметр, который бы указывал, а какой метод нужно вызвать, например:
const MODE__XML = 1;
const MODE__CSV = 2
...
public function index($mode = null)
{
switch($mode)
{
case self::MODE__XML : return $this->xml();
case self::MODE__CSV : return $this->xml();
default: return null;
}
}

...
// Вызываем
$object->index(1);
Это конечно примерно, возможно есть еще какие-то данные по задаче и тогда вполне вероятно данное решение может измениться.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.