加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP命名空间和Include()与类

发布时间:2020-12-13 17:28:05 所属栏目:PHP教程 来源:网络整理
导读:有一个我需要扩展的项目.所有类都在单独的文件中,我需要扩展一些类,而不会重写其他文件中的现有代码.我的想法是使用命名空间,但我失败了.这是一个例子: 我已将原来的A.php类文件重命名为A_Original.php: class A{ public function hello() { echo "hello w
有一个我需要扩展的项目.所有类都在单独的文件中,我需要扩展一些类,而不会重写其他文件中的现有代码.我的想法是使用命名空间,但我失败了.这是一个例子:

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

class A
{

    public function hello()
    {
        echo "hello world from Class An";
    }

}

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

namespace AOriginal {

    include 'A_Original.php';
}


namespace {

class A
{

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

}

}

这会失败,因为包含原始的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的方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读