Jestem bardzo początkującym w OOP i teraz próbuję napisać jakąś klasę PHP, aby połączyć się z serwerem FTP.PHP-OOP rozszerzające dwie klasy?
class ftpConnect {
private $server;
private $user;
private $password;
private $connection_id;
private $connection_correct = false;
public function __construct($server, $user = "anonymous", $password = "[email protected]") {
$this->server = $server;
$this->user = $user;
$this->password = $password;
$this->connection_id = ftp_connect($this->server);
$this->connection_correct = ftp_login($this->connection_id, $this->user, $this->password);
if ((!$this->connection_id) || (!$this->connection_correct)){
echo "Error! Couldn't connect to $this->server";
var_dump($this->connection_id);
var_dump($this->connection_correct);
return false;
} else {
echo "Successfully connected to $this->server, user: $this->user";
$this->connection_correct = true;
return true;
}
}
}
Uważam, że ciało klasy jest w tej chwili nieistotne.
Głównym problemem jest to, że mam pewne problemy ze zrozumieniem idei OOP.
Chciałem dodać e-maile wysyłane za każdym razem, gdy kod jest uruchamiany. Pobrałem PHPMailer Class i rozszerzony moją klasę z nim:
class ftpConnect extends PHPMailer {...}
Dodałem kilka zmiennych i metod i wszystko działa jak należy do tego punktu.
Pomyślałem: dlaczego nie dodać wszystkiego do bazy danych. Za każdym razem, gdy użytkownik uruchamia powyższy kod, właściwe informacje powinny być przechowywane w bazie danych.
Mogę edytować mój ftpConnect class
i dodać bazę danych łączącą się z konstruktorem, a także kilka innych metod aktualizowania tabel. Ale połączenie z bazą danych i wszystkie te rzeczy mogą być używane przez inne klasy w przyszłości, więc zdecydowanie powinno być realizowane w oddzielnej klasie. Ale mój "główny" ftpConnect class
rozszerzył już jedną klasę i nie mógł przedłużyć ani jednej.
Nie mam pojęcia, jak rozwiązać ten problem. Może mój ftpConnect class
jest skomplikowany i powinienem go jakoś podzielić na kilka mniejszych klas? Każda pomoc jest doceniana.
podczas tworzenia czegoś, co nazywa się Bogiem Object ** **, który jest pojedynczy obiekt, który odpowiedzialny jest za duży fragment (lub całego) aplikacji. To nie jest dobrze. * Każdy obiekt powinien mieć jedną odpowiedzialność i to wszystko *. Chcesz wysłać pocztę? Mają inny przedmiot do tego. Chcesz zapisać do bazy danych? Mają inny przedmiot do tego. Można je połączyć, przekazując odniesienia do siebie za pośrednictwem konstruktorów lub metod. To się nazywa ** Dependency Injection **. Sprawdź to. –
Niezależne obiekty specjalistyczne są w porządku, tak jak nie oczekujemy od profesora college'u nauczania * wszystkich * przedmiotów z college'u. – wallyk