在php中,如何处理一个类拥有另一个类的所有方法


In php,how to a class has all methods of another class?

在php中,我有两个类:

Class A
{
    public function a1()
    {
        ...
    }
    public function a2()
    {
        ...
    }
    more methods.
}
Class B
{
    private $b=new A();
}

我希望B拥有类A的所有方法。但我不想重写a1(),a2()。。。B类。这太麻烦了。有更好的方法吗
谢谢

我很抱歉。我认为我的示例代码不太正确。以下是新的B类:

class B
{
    private static $a=new A();
}

我希望B的多个实例共享一个a的实例。
所以我认为继承是不够的
谢谢。

定义类时可以使用extends

<?php
Class A
{
    public function a1()
    {
        ...
    }
    public function a2()
    {
        ...
    }
    more methods.
}
Class B extends A
{
    public function a3() {
        $this->a1();
        $this->a2();
    }
}
Class B extends A
{
}

这就是所谓的继承。类B将从其父类A继承所有公共和受保护的方法。

这是一个定义良好的编程实践,我建议您进一步研究它。有关php参考,请查看此处http://php.net/manual/en/language.oop5.inheritance.php

class B {
  private $b
  function __construct() {
    $this->b = new A();
  }
}

试试上面的

class B extends A {
}

您也可以签出以下内容:

  • http://php.net/manual/en/keyword.extends.php
  • http://php.net/manual/en/language.oop5.inheritance.php
  • https://www.youtube.com/watch?v=ipp4WPDwwvk&list=PLfdtiltiRWF0RicJb20da8nCQ1jFvla