我只是掌握了MVC框架,我常常想知道模型中应该有多少代码.我倾向于有一个数据访问类,其方法如下:
public function CheckUsername($connection, $username)
{
try
{
$data = array();
$data['Username'] = $username;
//// SQL
$sql = "SELECT Username FROM" . $this->usersTableName . " WHERE Username = :Username";
//// Execute statement
return $this->ExecuteObject($connection, $sql, $data);
}
catch(Exception $e)
{
throw $e;
}
}
Run Code Online (Sandbox Code Playgroud)
我的模型往往是映射到数据库表的实体类.
模型对象是否应具有所有数据库映射属性以及上面的代码,或者可以将实际上数据库工作的代码分开吗?
我最终会有四层吗?
我一直在为我的新工作学习Zend及其MVC应用程序结构,并发现使用它只是困扰我,原因是我无法完全理解.然后在学习过程中,我遇到了一些文章,如MVC:No Silver Bullet以及关于MVC和Web应用程序主题的播客.播客中的那个人对MVC作为一个Web应用程序架构提出了非常好的理由,并且扼杀了许多让我烦恼的东西.
但问题仍然存在,如果MVC不适合Web应用程序,那么它是什么?
我刚发布这个问题,所以你们中的一些人可能会以正确的方式指出我.我正在慢慢升温到OOP,开始理解这个概念.我想建立一个良好的核心或基础,用作CMS后端.它也将使用MVC.我一直在使用http://gilbitron.github.com/PIP/作为MVC基础.
我无法弄清楚的事情如下:
比如说,在后端的项目页面上我有两个部分:htmltext和项目,我应该能够编辑它们.uri将类似于:// domain/backend/projects(该方法将是索引并显示2个部分)
当我点击项目时应该如何处理?// domain/backend/projects/projects /或// domain/backend/projects/list /
更进一步,项目将保存一些图像或图库://域/后端/项目/编辑/ 5 /图库/ 2
我的问题是,首先:这是一个很好的方法,更重要的是如何在OOP中实现
主要项目控制人:
class projects {
function index(){
// view index
}
function edit{
$project = new Project();
$projectdata = $project->load(5);
}
}
Run Code Online (Sandbox Code Playgroud)
单个项目控制器
class project {
function __construct(){
$this->projectmodel = $this->loadModel('project_model'); // prepare the model to be used
}
function load($id){
$this->projectmodel->loadproject($id);
}
}
Run Code Online (Sandbox Code Playgroud)
项目模型
class project_model extends model { //extends for DB access and such
function __construct(){
// do stuff
}
function loadproject($id){
return …Run Code Online (Sandbox Code Playgroud)