5

我正在开发一个包含两个组件的项目:

1) 一个是 CodeIgniter 框架,我将在其中构建所有自定义代码。

2)另一个是亚马逊的用于MWS API的PHP SDK库。

问题是,我的 CodeIgniter 代码和亚马逊的 SDK 都需要它们自己的 autoload()。

Amazon 的 SDK 也进一步分为 3-4 个组件,每个组件都有自己的自动加载功能,所以如果你想在同一个会话中使用 Products 的 SDK,然后使用 Reports SDK,你会遇到已经定义的自动加载功能。

出于这个原因,我正在考虑建立一个 Web 服务系统,用于在我自己的代码和 Amazon 的 SDK 文件之间进行通信,即使它们在同一台服务器上,但至少这样可以避免命名冲突。即,我将向 CodeIgniter 外部的文件发送 HTTP 请求,该文件将处理 Amazon 的 SDK,并以 JSON 或 XML 格式返回响应。

我不认为命名空间是一种选择,因为我不想遍历 SDK 中的每个文件/类并添加命名空间语句。

我的问题是,我应该注意这种方法是否存在任何性能问题?除了命名空间之外,还有什么方法可以避免这种方法?

4

1 回答 1

1

只需将它们的自动加载器功能复制到一个单独的文件中,重命名它们,然后将它们连接起来spl_autoload_register

<?php
function loadFrameworkOne($name) {
    // contents of __autoload from framework one.
}
function loadFrameworkTwo($name) {
    // contents of __autoload from framework two.
}
spl_autoload_register('loadFrameworkOne');
spl_autoload_register('loadFrameworkTwo');

这很快,很脏,而且离我的头顶;)

于 2013-01-14T18:17:09.727 回答