Tôi rất mới bắt đầu với OOP và bây giờ tôi đang cố gắng viết một số lớp PHP để kết nối với máy chủ FTP.PHP-OOP mở rộng hai lớp?
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;
}
}
}
Tôi cho rằng nội dung của lớp không đáng kể vào lúc này.
Vấn đề chính là tôi gặp một số vấn đề khi hiểu ý tưởng OOP.
Tôi muốn thêm email gửi mỗi lần, khi mã được chạy. Tôi đã tải PHPMailer Class và mở rộng lớp học của tôi với nó:
class ftpConnect extends PHPMailer {...}
Tôi đã thêm một số biến và các phương pháp và mọi thứ hoạt động như mong đợi đến thời điểm đó.
Tôi nghĩ: tại sao không thêm lưu trữ mọi thứ trong cơ sở dữ liệu. Mỗi người dùng chạy trên mã, thông tin thích hợp nên được lưu trữ trong cơ sở dữ liệu.
Tôi có thể chỉnh sửa ftpConnect class
và thêm cơ sở dữ liệu kết nối với hàm tạo và một số phương pháp khác để cập nhật bảng. Nhưng cơ sở dữ liệu kết nối và tất cả những thứ đó có thể được sử dụng bởi các lớp khác trong tương lai, vì vậy nó chắc chắn nên được thực hiện trong lớp riêng biệt. Nhưng "chính" ftpConnect class
của tôi đã mở rộng một lớp và không thể mở rộng thêm một lớp nữa.
Tôi không biết làm thế nào tôi có thể giải quyết vấn đề này. Có lẽ tôi ftpConnect class
là phức tạp và tôi bằng cách nào đó nên chia nó thành vài lớp nhỏ hơn? Bất kỳ trợ giúp nào được đánh giá cao.
Bạn đang tạo những gì được gọi là Thiên Chúa Object ** **, mà là một đối tượng duy nhất có trách nhiệm cho một phần lớn (hoặc toàn bộ) ứng dụng. Điều đó không tốt. * Mỗi đối tượng nên có một trách nhiệm duy nhất, và đó là nó *. Muốn gửi thư? Có một đối tượng khác cho điều đó. Bạn muốn lưu vào cơ sở dữ liệu? Có một đối tượng khác cho điều đó. Bạn có thể kết nối chúng bằng cách chuyển các tham chiếu đến nhau thông qua các hàm tạo hoặc các phương thức. Đó được gọi là ** Dependency Injection **. Tìm kiếm. –
Các đối tượng chuyên biệt độc lập là tốt, giống như chúng ta không mong đợi một giáo sư đại học dạy * tất cả * môn học đại học. – wallyk