我正在制作一个可以装插件的机器人。我需要有关如何构造以及如何将插件中的命令包含到主对象中的帮助。
所以主机器人是非常简单的骨骼,它有$ bot对象和一些命令。例如:
namespace Bot;
... the bot class ..
Usage:
$bot = new Bot();
$bot->say('hello');
我在Commands / Bot.php中有这个文件
现在我制作一个插件Commands / Help.php
这里我用帮助命令创建一个类。现在我如何将其插入到$ bot中,以便我可以按如下方式使用它:
$bot->help->showHelp();
帮助类是$ bot的孩子。
我想以某种方式“注册”我想在配置文件中存在帮助命令。然后将它包含在带有循环的主Bot.php类中。
但那又怎么样?我如何让它成为一个孩子并附加在$ bot内?
第二种方法:
由于内存消耗,加载所有命令可能不好?
因此,如果您声明要使用的bot命令:
use Bot\Commands\Talk;
use Bot\Commands\Help;
我仍然希望将这两者合并为:
$bot->say();
$bot->help->showHelp();
感谢。
答案 0 :(得分:0)
您可以使用依赖注入来实现此目的。将Help对象传递给Bot的构造函数,然后将其分配给Bot的public $ help属性。然后,您可以使用$ bot-> help-> helpMethod();来调用帮助对象的方法。查看更多示例here。
class Bot{
public $help;
public function __construct(Help $help){
$this->help = $help;
}
public function say(){
echo "Talking...";
}
}
class Help{
public function showHelp(){
echo "Help is shown";
}
}
// instantiate the help object and pass it into the bot constructor
$bot = new Bot(new Help());
$bot->say();
$bot->help->showHelp();