从另一个类 PHP7 中调用一个类

指数

我有一个抽象类,其中包含所有常见的东西(DB 连接等),我可以将横幅放在那里,但我希望它们在自己的类中与 DB 分开。这就是我所拥有的有效...

include "includes/abstract-class.php";
include "includes/extended-class.php";
include "includes/separate-class.php";

$separate = new SEPARATEClass();
$extended = new EXTENDEDClass($separate);

然后,在抽象类中...

abstract class ABSTRACTClass 
{

    public function __construct (SEPARATEClass $separate){
        $this->separate = $separate;
    }

    // This empty function is needed in order for there not to be fatal errors 
    // even though the function with the same name that actually has content is 
    // in the separate class...
    protected function draw_small_banner(){
    }

然后,在我想调用函数的扩展类中,我可以做这样的事情,draw_small_banner()SEPARATEClass()...

class EXTENDEDClass extends ABSTRACTClass 
{

    parent::draw_small_banner();

我从其他一些 Stackoverflow 问题中尝试了几种不同的方法来做到这一点,但这是我让它工作的唯一方法。这是使用 PHP 7。有没有更好的方法可以工作?

此外,这对我来说似乎很奇怪,只有当空函数在抽象类中时才有效。如果有人可以解释这一点或提出更简洁的替代方案,我将不胜感激。

谢谢。

菲尔

如评论中所述,任何扩展ABSTRACTClass且不省略其构造函数的内容都应该可以访问$this->separate.

假设SEPARATEClass有类似的东西

public function draw_small_banner() {
    // do some drawing or something
}

我首先会使其成为ABSTRACTClass...的受保护成员

abstract class ABSTRACTClass {
    protected $separate;

    public function __construct(SEPARATEClass $separate) {
        $this->separate = $separate;
    }
}

然后,在您的扩展类中,您应该可以访问它

class EXTENDEDClass extends ABSTRACTClass {
    public function drawStuff() {
        $this->separate->draw_small_banner();
    }
}

执行看起来像

$separate = new SEPARATEClass();
$extended = new EXTENDEDClass($separate);
$extended->drawStuff();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在PHP的另一个类中调用方法

从另一个类的PHP中的一个类中调用一个函数

PHP - 从另一个类调用类函数

如何在类中调用函数以在php中调用另一个类?

PHP如何从另一个类调用函数?

PHP:从另一个文件调用父类

如何在另一个文件的另一个类中调用 php 方法?

来自新类中另一个类的调用方法-PHP

PHP从同一类中的另一个函数调用一个函数

在PHP类中包含另一个文件

PHP Unittest类加载另一个类

在php中的另一个类中调用静态属性

PHP-如何动态调用类中的另一个函数

PHP在另一个类中调用公共变量

PHP:是否可以从另一个静态类调用静态类方法?

PHP - 从另一个类调用数据库类

PHP将一个类传递给另一个类构造函数

PHP将类保存在其他文件中,然后从另一个类调用它

在不不断创建新对象的情况下,如何在php中从另一个类调用一个类?

php:在另一个类中定义的类中访问公共变量

PHP OOP。如何获取类的常量__METHOD__的值,如何在另一个类中创建另一个类的实例?

是否有可能获得扩展PHP中另一个类的类/文件的名称?

OOP(php)实例化另一个类中的类

如何使PHP类在其构造函数中实例化另一个类?

不了解php名称空间,如何从另一个类调用函数?

从另一个类调用variabile而不创建新实例[PHP]

PHP oop如何以更简单的方式调用另一个类方法?

从具有命名空间 (PHP) 的另一个类调用方法

PHP 扩展一个类并使用具有相同基类的另一个类