Мне было интересно, могу ли я немного помочь.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
}
}
Как мне нужны такие вещи, как «сервис» и порт, назначенный во время выполнения, IM используя «стратегический шаблон» для достижения этого, например.
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