Hier überlege ich mir, wie sehr sich eine Implementierung eigentlich am zugrundeliegenden Protokoll orientieren sollte oder muss. In diesem Fall beschreibe ich das anhand einer FTP-Klasse, damit es konkrete Beispiele gibt. Und ja, ich verwende wirklich noch FTP, da einige Anbieter nur so den Transfer von Dateien ermöglichen.
Eine einfache Klasse die nur als Wrapper für die [MAN]FTP[/MAN]-Funktionen von PHP verwendet. Hier wird das Protokoll sehr ähnlich über die Klasse abgebildet.
Die Methode upload hat einen optionalen Parameter $target. Dieser ist in [MAN]ftp_put[/MAN] Pflicht. Jedoch kann dieser einfach anhand von [MAN]ftp_pwd[/MAN] und dem lokalen Dateinamen erstellt werden.
Könnte es einen Mehrwert bieten, das ganze wie folgt aufzubauen:
Hier sehe ich (auf den ersten Blick) mehr Möglichkeiten für zukünftige Erweiterungen, die mir ein einfacher Wrapper nicht bietet.
So kann das login ein weiteres mal ausgeführt werden. Dadurch wird nicht die vorhandene Verbindung für mehrere Sessions verwendet, sondern eine neue Verbindung mit anderen Zugangsdaten verwendet, da das Protokoll oder die Implementierung der FTP-Funktionen eine solche Möglichkeit nicht bietet.
Da dem FtpClient die Verbindungen bekannt sind, könnte es möglich sein, dass sich der FtpClient bei folgenden Aufruf die passende Verbindung selbst raussucht:
Wie sind eure Meinungen dazu? Bevor ich mich an eine Beispielumsetzung mache und dann feststelle, dass die Idee an sich nicht nicht sinnvoll ist, würde ich gerne eure Meinungen dazu wissen.
Eine einfache Klasse die nur als Wrapper für die [MAN]FTP[/MAN]-Funktionen von PHP verwendet. Hier wird das Protokoll sehr ähnlich über die Klasse abgebildet.
PHP-Code:
$ftp = new FtpClient();
$ftp->connect('ftp.example.com');
$ftp->login('username', 'password');
$ftp->chdir('/foo');
$ftp->upload('bar');
Könnte es einen Mehrwert bieten, das ganze wie folgt aufzubauen:
PHP-Code:
$ftp = new FtpClient();
$connection = $ftp->connect('ftp.example.com');
$session = $connection->login('username', 'password');
$directory = $session->changeDirectory('/foo');
$directory->upload('bar');
So kann das login ein weiteres mal ausgeführt werden. Dadurch wird nicht die vorhandene Verbindung für mehrere Sessions verwendet, sondern eine neue Verbindung mit anderen Zugangsdaten verwendet, da das Protokoll oder die Implementierung der FTP-Funktionen eine solche Möglichkeit nicht bietet.
PHP-Code:
$session2 = $connection->login('username2', 'password');
$directory2 = $session2->changeDirectory('/foo');
$directory2->upload('bar');
Da dem FtpClient die Verbindungen bekannt sind, könnte es möglich sein, dass sich der FtpClient bei folgenden Aufruf die passende Verbindung selbst raussucht:
PHP-Code:
$ftp->download('ftp://username1@ftp.example.com/foo/bar');
Wie sind eure Meinungen dazu? Bevor ich mich an eine Beispielumsetzung mache und dann feststelle, dass die Idee an sich nicht nicht sinnvoll ist, würde ich gerne eure Meinungen dazu wissen.
Kommentar