我想知道我是否可以得到一些幫助。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