首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在PHP中,如何将一个类实例传递给另一个类的构造函数

在PHP中,如何将一个类实例传递给另一个类的构造函数
EN

Stack Overflow用户
提问于 2018-06-20 03:35:57
回答 1查看 46关注 0票数 -2

我正在尝试按照Tutorials Point上的步骤实现桥设计模式。我正在将代码从Java转换为PHP并更改一些名称。

问题是,当我试图将具体的桥实现程序类传递给实现接口的具体类时,抛出了一个错误。

我的代码如下:

代码语言:javascript
复制
// LaunchApi.php
interface LaunchApi
{
    public function launch();
}

// RedEngine.php
class RedEngine implements LaunchApi
{
    public function launch()
    {
        echo "The red engine is really fast!!!";
    }
}

// Rocket.php
abstract class Rocket
{
    protected $launchApi;

    protected function __construct($launchApiImplementer)
    {
        $this->launchApi = $launchApiImplementer;
    }

    public abstract function launch();
}

// FullRocket.php
class FullRocket extends Rocket
{
    public function __construct($launchApi)
    {
        parent::__construct($launchApi);
    }

    public function launch()
    {
        $this->launchApi->launch();
    }
}

// LaunchingScript.php
$redEngine = new RedEngine();
$redEngine->launch(); // this works

$redRocket = new FullRocket($redEngine);
$redRocket.launch(); // this won't work

抛出的错误是:

代码语言:javascript
复制
design-patterns\Bridge>php LaunchingBridge.php
The red engine is really fast!!!
Fatal error: Call to undefined function launch() in \design-patterns\Bridge\LaunchingBridge.php on line 24

我尝试使用&来传递引用,但它只改变了错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-20 10:49:51

是啊,应该是$redRocket->launch();而不是奈杰尔·任所说的$redRocket.launch();

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50935747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档