PHP как автозагрузчик в Java - PullRequest
3 голосов
/ 04 января 2012

Поддерживает ли интерпретатор Java функцию автозагрузчика или возможность расширить его функцию «Поиск класса»?

В PHP есть функция spl_autoload_register (подробности см. http://www.php.net/manual/en/function.spl-autoload-register.php), которая заставляет интерпретатор выполнять мою собственную функцию обратного вызова, когда он ищет отсутствующий класс.В мою функцию обратного вызова я могу включить файл с ожидаемым классом.

Идея фона состоит в том, что я хотел бы динамически переключаться между уровнями программного обеспечения.

Например:Если класс x_L2 существует на уровне 2, тогда класс x_L1 на нижележащем уровне 1 следует игнорировать.На самом деле я решил эту проблему с помощью общего зеркального класса x, который должен наследоваться от класса в самом высоком доступном слое.Но этот путь подвержен ошибкам, когда вам нужно поддерживать сотни классов.

Заранее спасибо.

Ответы [ 4 ]

1 голос
/ 04 января 2012

Кажется, вы пытаетесь написать собственный загрузчик классов ?

IBM имеет хорошую документацию , чтобы помочь вам в этом.

1 голос
/ 04 января 2012

Это можно сделать с помощью другого загрузчика классов, например URLClassLoader.Затем вы получите свои классы из этого загрузчика классов с loadClass.Да, он также поддерживает локальные и удаленные ресурсы.

1 голос
/ 04 января 2012

Вы можете написать свой собственный ClassLoader подкласс и использовать его loadClass() вместо стандартного.

0 голосов
/ 04 января 2012

Классы идентифицируются по их пакету, так как классы могут быть определены по пространствам имен в PHP. Чтобы использовать определенный класс, вы можете просто использовать определенное имя.

public mypackage.mysubpackage.Myclass myInstanceofMyClass;

Или вы можете импортировать только необходимый класс:

import mypackage.mysubpackage.Myclass;

Вы не можете иметь класс с тем же именем, что и другой класс в том же пакете. Это дублирующее определение типа. Я не в курсе функции обратного вызова для включения.

...