我想知道我是否可以得到一些帮助。PHP - 使用接口,策略模式和可选方法参数
我有像这样
interface BackupContract {
public function testConn($request, $port);
}
接口然后该接口的2个示例实现如下
class FTPBackup implements BackupContract {
public function testConn($request, $port = 21) {
// code here
}
}
class SFTPBackup implements BackupContract {
public function testConn($request, $port = 22) {
// code here
}
}
正如我所需要的东西等在运行时指定“服务”和端口,即时通讯使用“战略模式”来实现这一点,就像这样。
class BackupStrategy {
private $strategy = NULL;
public function __construct($service) {
switch ($service) {
case "ftp":
$this->strategy = new FTPBackup();
break;
case "sftp":
$this->strategy = new SFTPBackup();
break;
}
}
public function testConn($request, $port)
{
return $this->strategy->testConn($request, $port);
}
}
最后,在我的控制器im使用下面的代码把它放在一起。
$service = new BackupStrategy($request->input('service'));
$service->testConn($request, $request->input('port'));
的问题是,如果用户输入犯规一个端口,它是指自动分配端口变量,即21或22等中的2层的实施方式。
它似乎并不奏效,但它不抛出任何错误
对不起,我忘了改变它...它确实检查testConn() – BigJobbies