require_once()和autoloader - 如何加载平板php?

时间:2012-09-12 14:42:15

标签: php symfony

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

我不能使用自动加载器,因为写成here

  

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

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

如果您的课程和第三方库用于您的项目   遵循这些标准,Symfony2自动加载器是唯一的自动加载器   你将永远需要。

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

因此,如果我无法自动加载该文件,那么因为require_once(或简称require)与{{1}一起使用是不可能的(因为我理解,但我可能会出错) },这个问题的解决方案是什么?

1 个答案:

答案 0 :(得分: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文件。