使用 parent 调用 child 函数

Calling child function using parent

大家好遇到架构问题,我先解释一下架构

服务:

类:

Parent 实现接口类,子类扩展 parent类。

所有孩子都有不同的功能,让我们说 FirstChildClass 上的 firstfunction,SecondChildClass 上的 secondfunction,

我想通过仅调用 parent 来调用服务上的第一个函数,例如 ParentClass:init()->firstclass();

我要使用的语言是 PHP,有人知道我该如何实现这样的东西吗?

您将需要在 Service class 构造函数中使用一个广义参考变量(基类 superclass)来实现此目的。它被称为泛化和拓宽。在编程术语中,我们称之为 Upcasting.

BaseActivityclass

class BaseActivity{
    function base(){
        echo "from base", PHP_EOL;
    }
}

电影类class

class MovieClass extends BaseActivity{
    function movie(){
        echo "from MovieClass", PHP_EOL;
    }
}

步行班class

class WalkClass extends BaseActivity{
    function walk(){
        echo "from WalkClass", PHP_EOL;
    }
}

服务class

class Service{
    public $activity;
    function __construct(BaseActivity $b){ // here you have the base generalized reference of your hierarchy
        $this->activity = $b;
    }
}

Driver代码:

<?php

$service_A = new Service(new MovieClass());
$service_A->activity->movie();


$service_B = new Service(new WalkClass());
$service_B->activity->walk();

Online Demo

注意: 所以每当你将 object 传递给 Service class 构造函数时,它必须是 BaseActivity.