【发布时间】:2014-04-26 12:03:06
【问题描述】:
我正在使用 Magento,但这不是 Magento 特定的问题。
假设您正在使用包含类 Foo 的 foo.php。在 Magento 中,如果存在 /local/foo.php 将被包含,否则 /core/foo.php 将被包含。在这两者中,类 Foo 都被定义了。这里的问题是两个文件都包含类 Foo,因此 /local/foo.php 中的类不能扩展 /core/foo.php 中的类。最终,这需要将 /core/foo.php 中的所有代码复制到 /local/foo.php 中,减去我的自定义。
/core/foo.php - 我无法更改此文件!
<?php
class Foo {
public function test() {
echo 'core/foo.php :: Foo :: test';
}
}
?>
/local/foo_include.php
<?php
namespace mage {
require '../core/foo.php;
}
?>
/local/foo.php - 我无法在此文件中放置命名空间,因为我无法控制实例化此类的文件。
<?php
require './foo_include.php';
use mage;
class Foo extends mage\Foo {
function __construct() {
var_dump('Un-namespaced Foo!');
}
}
$foo = new Foo();
$foo->test();
?>
上面的不行,说mage\Foo不存在。 (如果核心 Foo 类是在 foo_include 中定义而不是通过包含引入的,它确实有效。
有什么办法可以解决我想念的吗?
【问题讨论】:
标签: php class magento namespaces include