gpt4 book ai didi

带有类的 PHP 命名空间和 Include()

转载 作者:可可西里 更新时间:2023-10-31 22:52:14 25 4
gpt4 key购买 nike

有一个项目需要扩展。所有类都在单独的文件中,我需要扩展一些类而不重写其他文件中的现有代码。我的想法是使用 namespace ,但我失败了。这是一个例子:

我已将原来的 A.php 类文件重命名为 A_Original.php:

class A
{

public function hello()
{
echo "hello world from Class A\n";
}

}

然后创建一个新的A.php:

namespace AOriginal {

include 'A_Original.php';
}


namespace {

class A
{

public function hello()
{
echo "hello world from Class A Extended\n";
}

}

}

这失败了,因为在 including 原始 A_Original.php 文件中,该类被转储到全局范围(因此忽略了命名空间命令)。我无法修改A_Original.php 文件中的现有代码,但可以重命名。

其他项目文件(我无法修改)使用require "A.php"

如何实现?

最佳答案

您可以在不修改其现有行为的情况下扩展一个类:

class A {
public function foo(){

}
}

class MySubClassOfA extends A {
public function bar(){

}
}

您可以将自己的方法添加到 MySubClassOfA,即 bar()。您可以在 MySubClassOfA 上调用 foo 方法,它的行为是相同的,除非您在 MySubClassOfA 中定义了一个名为 foo 的方法。

关于带有类的 PHP 命名空间和 Include(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1409977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com