我正在尝试按照Tutorials Point上的步骤实现桥设计模式。我正在将代码从Java转换为PHP并更改一些名称。
问题是,当我试图将具体的桥实现程序类传递给实现接口的具体类时,抛出了一个错误。
我的代码如下:
// 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
抛出的错误是:
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
我尝试使用&来传递引用,但它只改变了错误。
发布于 2018-06-20 10:49:51
是啊,应该是$redRocket->launch();
而不是奈杰尔·任所说的$redRocket.launch();
https://stackoverflow.com/questions/50935747
复制相似问题