覆盖课程

时间:2018-01-25 17:01:54

标签: php class oop

如何自动覆盖类?

例如,我有3个文件,例如one.phptwo.phpthree.php。在每个文件中,我都有相同的类:

class A
{
   function someFunc() {}
}

我有一个加载3个文件的foreach。每次A课程时,我如何强制PHP覆盖?我不想拥有不同的类名,每个类都必须具有相同的类名。

我正在考虑命名空间或类似的东西,但我在命名空间方面并不是那么好。

2 个答案:

答案 0 :(得分:1)

这听起来像是一种代码味道。

为什么需要重用现有的类名?

我几乎可以肯定你可以用接口来解决你的问题。

然而这里有一个解决方案:

a.php只会:

namespace A {
    class Foo { public function __construct() { echo 'A'; } }
}

B.php:

namespace B {
    class Foo { public function __construct() { echo 'B'; } }
}

C.php:

namespace C {
    class Foo { public function __construct() { echo 'C'; } }
}

loader.php

foreach (['A', 'B', 'C'] as $ns) {
    require_once __DIR__.'/'.$ns.'.php';
    $class = $ns.'\\Foo';
    $obj   = new $class();
}

输出ABC

答案 1 :(得分:1)

只是为了通知大家,我终于通过使用命名空间来解决它。我将在这里发布我的最终解决方案。

感谢大家的帮助!

每个文件:

namespace Unique\Namespace\Here;

use ExtendParent;

class A extend ExtendParent
{
   ...
}