假设我正在构建一个基于OOP的用户身份验证系统,并且我想要融入以下原则:直接注入(Direct Injection)、继承(Inheritance)、封装(Encapsulation)、多态性(Polymorphism)和单一职责原则(Single Responsibility Principle)。
我的编程背景一直依赖于过程式编程,因此,我发现真正将这些实践应用到正确的地方还是有困难的。
假设我有以下类:
我有意省略了函数体以保持简单。
据我所知,我认为我正确地使用了原则。然而,我仍然不清楚如何连接类,比如:将
我的编程背景一直依赖于过程式编程,因此,我发现真正将这些实践应用到正确的地方还是有困难的。
假设我有以下类:
class Config
{
public function set($key, $value);
public function get($key, $default = null);
}
class User
{
public function __construct(PDO $dbh, $id = null);
public function setProfile(Profile $profile);
}
class Auth
{
public function __construct(Config $config);
public function login($username, $password, $keepLoggedIn = true);
public function isLoggedIn();
public function getLoggedInUser();
public function logout();
public function register(array $data);
}
class Session
{
public function start($sessionName = null);
public function write($key, $value);
public function read($key, $default = null);
}
class Profile
{
public function setAddress(Address $address);
public function setName($name);
public function setDOB(DateTime $date);
public function getAge();
}
class Validator
{
public function validate($input);
}
我有意省略了函数体以保持简单。
据我所知,我认为我正确地使用了原则。然而,我仍然不清楚如何连接类,比如:将
Validator
连接到 User
模型,将 User
模型连接到 Auth
,将 Session
连接到 Auth
类。所有这些都互相依赖。