说我有
在OOP中,应该根据抽象逻辑创建哪些类和对象?
我应该明确调用哪些方法以及应该自动运行哪些方法?我是否需要对象和类之外的变量?
例如,我创建一个说Worker
类的对象并将请求传递给它。是应该在__construct
方法中验证并保存为property
,还是应该明确地呼叫说verify_input()
,接收$result
然后将其传递给save_input($result)
?
希望我能说清楚。
答案 0 :(得分:1)
控制器的
我会有控制器类,让我们说WorkerController
,其中包含与指定实体/对象相关的所有操作,并且还有Request
服务
然后我会创建服务类,让我们说WorkerService
我将在其中编写该对象的所有业务代码
DAO
我也有DAO层,这是一个将所有数据访问与应用程序需求分开的类。让我们说WorkerDAO
(简言之,在这里建立您的查询)。
验证
关于验证,你可以创建一个父类,让我们说Validator
,你可以在其中处理一系列错误,然后为你需要验证的每个对象扩展这个类。 E.g WorkerValidator
(在这里你进行了所有验证)。
接口
另外,我会为每个服务和DAO提供一个界面。
实施例
class WorkerService implements WorkerServiceImpl
和
class WorkerDAO implements WorkerDAOImpl
界面示例
interface WorkerDAOImpl {
public function save(Worker $worker);
public function edit(Worker $worker);
public function remove(Worker $worker);
// and so on...
}
您也可以拥有这些方法的主界面,因为您将在许多DAO中使用它们
所以它变成了
class WorkerDAO implements DAOImpl, WorkerDAOImpl
interface DAOImpl {
public function save(Worker $worker);
public function edit(Worker $worker);
public function remove(Worker $worker);
// and so on...
}
和
interface WorkerDAOImpl {
public function findByCode(Worker $worker);
public function findByBoss(Worker $worker);
public function findByWhatever(Worker $worker);
// and so on...
}
注意强>
示例:
class WorkerService {
private $dao;
public function __construct($dao) {
$this->dao = $dao;
}
}
这是一个基于某些MVC模式的非常基本的结构,我认为从哪里开始可能是一个好点。玩得开心: - )