2

我有一个文件(用于 PHP 的 xmlrpc 库),我想将其用于 Symfony2 类(因此在 Symfony2 项目中)。

我不能使用自动加载器,因为写在这里

它能够[自动加载器]从实现以下约定之一的文件中加载类:

1) The technical interoperability standards for PHP 5.3 namespaces and 
   class names;
2) The PEAR naming convention for classes.

如果您用于项目的类和第三方库遵循这些标准,那么 Symfony2 自动加载器是您唯一需要的自动加载器。

我将要使用的课程不满足其中一项要求。

因此,如果我无法自动加载该文件,因为不可能(据我了解,但我可能会出错)使用require_once(或简单地require) with namespace,这个问题的解决方案是什么?

4

1 回答 1

5

假设您有一个名为xmlrpc.lib.php以下内​​容的文件:

<?php 
class XMLRPC_Server {
    // ...
}

class XMLRPC_Request {
    // ...
}

class XMLRPC_Response {
    // ...
}

您可以创建一个实例MapClassLoader来处理它的自动加载:

// Create map autoloader
$mapLoader = new MapClassLoader(array(
    'XMLRPC_Server' => __DIR__.'/../library/xmlrpc.lib.php',
    'XMLRPC_Request' => __DIR__.'/../library/xmlrpc.lib.php',
    'XMLRPC_Response' => __DIR__.'/../library/xmlrpc.lib.php',
));

// Register autoloader
$mapLoader->register();

当这些类之一将被自动加载时,其他类也将被自动加载,因为它们共享相同的 PHP 文件。

于 2012-09-12T16:08:44.183 回答