Я создал оболочку ssh2.Я прочитал, что конструктор не должен завершиться сбоем, поэтому соединение ssh2 выполняется не в оболочке, а методом connect()
.У меня вопрос: как мне убедиться, что connect()
вызван?Мне также действительно нужно, чтобы он вызывался только один раз.
class uploader {
private $user; private $pass; private $host;
private $ssh = null; private $sftp = null;
public function __construct($host, $user, $pass) {
$this->host = $host; $this->user = $user; $this->pass = $pass;
}
public function connect() {
if ($this->ssh === null) {
$this->ssh = ssh2_connect($this->host);
ssh2_auth_password($this->ssh, $this->user, $this->pass);
$this->sftp = ssh2_sftp($this->ssh);
}
}
}
Каков наилучший способ обеспечить вызов метода connect ()?Должно ли приложение вызывать его?
$ssh = new uploader('host', 'user', 'pass');
$ssh->connect();
Или в методах класса?
...
public function upload($source, $dest, $filename) {
$this->connect();
...
}
public function delete($file) {
$this->connect();
...
}
Ни один из них не кажется идеальным.
Я также думал о создании статического методаэто обернет конструктор и соединит, но тогда конструктор должен быть закрытым, и я также прочитал, что статические методы нежелательны (в основном только для модульного тестирования).