我只是掌握了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)
我的模型往往是映射到数据库表的实体类.
模型对象是否应具有所有数据库映射属性以及上面的代码,或者可以将实际上数据库工作的代码分开吗?
我最终会有四层吗?
我不时会看到有关连接数据库的问题.
大多数答案不是我这样做的方式,或者我可能没有正确得到答案.无论如何; 我从来没有想过这个,因为我这样做对我有用.
但这是一个疯狂的想法; 也许我这样做是错的,如果是这样的话; 我真的想知道如何使用PHP和PDO正确连接到MySQL数据库并使其易于访问.
我是这样做的:
首先,这是我的文件结构(剥离):
public_html/
* index.php
* initialize/
-- load.initialize.php
-- configure.php
-- sessions.php
Run Code Online (Sandbox Code Playgroud)
index.php
在最顶端,我有require('initialize/load.initialize.php');.
load.initialize.php
# site configurations
require('configure.php');
# connect to database
require('root/somewhere/connect.php'); // this file is placed outside of public_html for better security.
# include classes
foreach (glob('assets/classes/*.class.php') as $class_filename){
include($class_filename);
}
# include functions
foreach (glob('assets/functions/*.func.php') as $func_filename){
include($func_filename);
}
# handle sessions
require('sessions.php');
Run Code Online (Sandbox Code Playgroud)
我知道有更好或更正确的方法来包含类,但不记得它是什么.还没有时间去研究它,但我认为这是有道理的autoload.类似的东西......
configure.php
这里我基本上只是覆盖一些php.ini -properties并为该站点做一些其他的全局配置
connect.php
我把连接放到一个类上,所以其他类可以扩展这个...
class …Run Code Online (Sandbox Code Playgroud) 我需要更有经验的程序员的帮助.我想提高我的MVC技能.但我找不到关于Google for MVC的好教程.谷歌总是给"初学者MVC".
我理解MVC是什么,我可以做到,但我没有经验足以在OOP中做一些实用的事情.
如果有人知道一个好的面向对象的MVC教程,请指引我到正确的地方 - 我正在寻找好的链接,书籍等.
我编写了自己的小PHP MVC框架,现在我在PHP MVC框架中探索缓存策略.我在想什么可以缓存,在哪里以及如何.
我拥有的框架是简单的MVC框架.我有前置控制器,启动应用程序,注册类自动加载,设置php运行时指令......最后分析URL并将请求分派给适当的控制器,方法,动作控制器,如何调用它.从控制器,我可以访问域对象和数据映射器,它们可以将域对象持久保存到某个存储,大部分时间是关系数据库.从控制器我可以访问域对象和数据映射器.
因此,就缓存而言,这些是我所知道的事情,我知道我现在可以做的事情.使用PHP,我可以使用作为操作码缓存的APC缓存,但我也可以使用它将变量保存到RAM中.然后我可以使用Memcache和Memcahed作为APC缓存工作,但我可以从不同的服务器访问存储的缓存如果我必须扩展.而这两个不是操作码缓存.
据我所知,我可以做这些事情:
当在控制器中时,我可以将域对象保存到缓存中,因此如果我已经在缓存中已经拥有该域对象,那么每次都不必打开与数据库的连接.
我可以构建我的缓存系统,它会在引导程序中分析URL,然后在存在具有该页面URL的缓存时获取该URL的已解释页面,如果不存在则处理请求然后将该页面保存到缓存中并将其与当前URL关联
所以,正如你所看到的,我真的不知道如何在我的MVC中实现缓存,我应该在哪里缓存内容,如何以及存在哪些可能性.
那么有人可以更好地解释这一点,或者将我重定向到一些我可以学习缓存的好文章吗?
谢谢!