【问题标题】:PHP like Autoloader in JavaPHP 类似于 Java 中的 Autoloader
【发布时间】:2012-01-04 09:54:00
【问题描述】:

Java 解释器是否支持自动加载功能或扩展其“寻找类”功能的可能性?

在 PHP 中有一个名为 spl_autoload_register 的函数(有关详细信息,请参阅http://www.php.net/manual/en/function.spl-autoload-register.php),它强制解释器在查找丢失的类时执行我自己的回调函数。在我的回调函数中,我可以将文件包含在预期的类中。

背景想法是我想在软件层之间动态切换。

例如:
如果第 2 层中存在类 x_L2,则应忽略底层第 1 层中的类 x_L1。实际上我用一个通用的镜像类 x 解决了这个问题,它必须从最高可用层中的类继承。但是当您必须维护数百个类时,这种方式很容易出错。

提前致谢。

【问题讨论】:

    标签: java playframework autoloader


    【解决方案1】:

    这可以通过使用不同的类加载器来完成,例如URLClassLoader。然后,您将使用loadClass 从此类加载器中获取您的类。是的,它还支持本地和远程资源。

    【讨论】:

      【解决方案2】:

      您可以编写自己的ClassLoader 子类,并使用它的loadClass() 而不是默认的。

      【讨论】:

        【解决方案3】:

        您似乎正在尝试编写自定义类加载器

        IBM 在这方面有 good documentation 可以帮助您。

        【讨论】:

          【解决方案4】:

          类由它们的包标识,因为类可以由 PHP 中的命名空间标识。 为了使用特定的类,您可以简单地使用限定名称。

          public mypackage.mysubpackage.Myclass myInstanceofMyClass;

          或者你可以只导入需要的类:

          import mypackage.mysubpackage.Myclass;

          您不能在同一个包中拥有与另一个类同名的类。这是一个类型的重复定义。我不知道包含回调函数。

          【讨论】:

            猜你喜欢
            • 2012-10-14
            • 1970-01-01
            • 2011-02-02
            • 2015-02-17
            • 1970-01-01
            • 2011-11-23
            • 1970-01-01
            • 1970-01-01
            • 2011-03-20
            相关资源
            最近更新 更多