2012-05-21 5 views
0

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

Пример Класс:

class Importer{ 
    private function import(){} 
} 

Теперь я хочу отправить параметр, переданный __autoload() к import функции Importer класса.
Я также регулярно знаю, что невозможно и нелогично вызывать частную функцию, но знаете ли вы какое-либо решение или трюк, чтобы держать import() частным или препятствовать прямому доступу?

+0

Почему вы не просто частный метод, как 'processImport' и общедоступный метод под названием' import', чтобы обойти эту проблему? – Treffynnon

+1

Автозагрузчики также не могут получить доступ к личным методам. Вы не можете иметь это в обоих направлениях. Это либо полностью закрытое, либо совсем не. И если вы чувствуете необходимость делать исключения для себя, решение о том, чтобы сделать частный метод, было в первую очередь ошибочным. - Если вы имели в виду что-то еще, пожалуйста, повторите попытку с самого начала. – mario

+0

@Treffynnon: Так как это может решить проблему? функция 'import' по-прежнему доступна напрямую – Omid

ответ

2
class Importer { 
    public function __construct() { 
     spl_autoload_register(array($this, 'import')); 
    } 

    private function import($class) { 
     include $class . '.php'; 
    } 
} 

$importer = new Importer(); 

$obj = new testclass(); 

var_dump($obj); 

Выход

объект (TestClass) # 2 (0) {}

+0

Точно решение, спасибо – Omid

Смежные вопросы