Вопрос собственно даже по ООП..
Есть такая структура контроллера, но я не уверен что она верная :)
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);