我有一个文件(PHP的xmlrpc库),我想用到Symfony2类(所以在Symfony2项目中).
我不能使用自动加载器,因为这里写的
能够[自动加载器]从实现以下约定之一的文件加载类:
Run Code Online (Sandbox Code Playgroud)1) The technical interoperability standards for PHP 5.3 namespaces and class names; 2) The PEAR naming convention for classes.
如果您的课程和您用于项目的第三方库遵循这些标准,Symfony2自动加载器是您唯一需要的自动加载器.
我将要使用的课程,不满足其中一个要求.
因此,如果我不能自动加载该文件,因为不可能(我理解,但我可能会出错)使用require_once
(或简单地require
)namespace
,这个问题的解决方案是什么?
假设您有一个名为xmlrpc.lib.php
以下内容的文件:
<?php
class XMLRPC_Server {
// ...
}
class XMLRPC_Request {
// ...
}
class XMLRPC_Response {
// ...
}
Run Code Online (Sandbox Code Playgroud)
您可以创建一个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();
Run Code Online (Sandbox Code Playgroud)
当其中一个类被自动加载时,其他类也将自动加载,因为它们共享相同的PHP文件.