使用 parent 调用 child 函数
Calling child function using parent
大家好遇到架构问题,我先解释一下架构
服务:
- 测试服务
类:
- 接口类
- Parent类
- FirstChildClass
- SecondChildClass
- ThirdChildClass
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();
注意: 所以每当你将 object 传递给 Service
class 构造函数时,它必须是 BaseActivity
.
大家好遇到架构问题,我先解释一下架构
服务:
- 测试服务
类:
- 接口类
- Parent类
- FirstChildClass
- SecondChildClass
- ThirdChildClass
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();
注意: 所以每当你将 object 传递给 Service
class 构造函数时,它必须是 BaseActivity
.