gagassss / dojomvc
PHP MVC 框架
Requires
- php: ^5.6
This package is not auto-updated.
Last update: 2019-06-22 11:09:51 UTC
README
dojomvc 是一个面向任何构建网站的人的 PHP MVC 框架。这是一个开源框架,因此您可以添加功能,修复一些错误。
Dojomvc 版本
V.1.0
需求
PHP 版本 ^5.6
特性
- 基于 MVC 的系统
- 带有基本的查询数据库:CRUD,Where,select,orderBy,Limit 子句
- 友好的 URL
用户指南
目录
1. public 目录 包含将展示给用户的内容,允许您保存 CSS、JavaScript 文件和图像。
2. app 目录 包含用户(开发者)看不到的内容。
模型-视图-控制器
Dojomvc 基于 MVC,当然,还有辅助查询数据库 1. 模型 代表您的数据结构。通常,您的模型类将包含帮助您在数据库中检索、插入和更新信息的函数。
2. 视图 是展示给用户的信息。视图通常是一个网页,但在 dojoMVC 中,视图也可以是页面片段,如页眉或页脚。它还可以是 RSS 页面或任何其他类型的“页面”。
3. 控制器 是模型、视图以及处理 HTTP 请求并生成网页所需的任何其他资源之间的中介。
控制器
1. 控制器的定义 控制器只是一个以某种方式命名的类文件,可以与 URI 关联。
2. 创建自己的控制器 如果您创建了自定义控制器,请确保它扩展到 'Dojo_controller',默认情况下,默认控制器是 'home',您可以在 config.php 文件中更改此设置。如果用户在 URL 中输入不存在的控制器,则将使用默认控制器,并且当网站打开时,将运行默认控制器。每个控制器都必须有一个默认方法,其名称为 index。示例:
class Home extends Dojo_controller { public function index() { // } }
3. 组织您的控制器 将每个控制器分开存储在不同的文件或子目录中。控制器存储在您的 app/controllers/here
方法
在上面的示例中,方法名称是 index()。如果 URI 的第二部分为空,则默认加载“index”方法。
示例
class Home extends Dojo_controller { public function index() // index is a default method { } }
模型
1. 什么是模型 模型是PHP类,用于与数据库中的信息交互。您可能有一个包含插入、更新和检索博客数据功能的模型类。 —— CodeIgniter。如果您自己创建模型,请确保它扩展到 'Dojo_model'。
2. 组织您的模型 将每个模型保存在不同的文件或子目录中。模型存储在您的app/models/目录下
3. 加载和调用模型 模型将通过您的控制器加载和调用,要加载模型,您必须使用以下方法:$this->model('model_name')->method_name();
如果模型位于子目录中,请包含从模型目录的相对路径。例如,如果您有一个位于 app/models/blog/user.php 的模型,您将使用以下方式加载它:$this->model->('blog/user');
以下是一个加载模型的控制器的示例
class home extends Dojo_controller { public function index() { $this->model->('blog')->user(); } }
4. 创建模型
class blog extends Dojo_model { public function user() { // } }
视图
1. 什么是视图 视图简单地说就是一个网页,或者一个页面片段,如页眉、页脚、侧边栏等。实际上,如果需要这种层次结构,视图可以灵活地嵌入在其他视图(以及其他视图,等等)中。
视图从不直接调用,它们必须由控制器加载。记住,在MVC框架中,控制器充当交通警察,因此它负责获取特定的视图。如果您还没有阅读控制器页面,您应该在继续之前阅读。
## 加载和调用视图
视图将通过您的控制器加载和调用,要加载视图,您必须使用以下方法:$this->view('view_name');
以子目录形式存储视图
如果愿意,您也可以将视图文件保存在子目录中。在这种情况下,您需要在加载视图时包含目录名称。例如:$this->view('directory_name/file_name');
以下是一个加载视图的控制器的示例
class home extends Dojo_controller { public function index() { $this->view->('login'); } }
将数据发送到视图
数据通过视图加载方法的第二个参数中的对象从控制器传递到视图。以下是一个使用数组的示例
class home extends Dojo_controller { public function index() { $data['user'] = $this->db->get_data('user'); // data obtained from database queries and then sent to view $data['page'] = 'login'; $this->view->('login', $data); } }
在文件视图中,使用从控制器发送的数据可以以下方式,示例
<!DOCTYPE html> <html lang="en"> <head> <title><?php echo $data['page']; ?></title> </head> <body> <?php var_dump($data['user']); ?> </body> </html>
数据库
1. 配置数据库 设置您的数据库配置,在此框架中,仅针对MySQL
2. 自动连接 “自动连接”功能将在每次页面加载时加载并实例化数据库类。要启用“自动连接”,请打开位于 app/core/config.php 的config.php文件,并在选项“自动连接到数据库/auto_connect_db”中将值设置为'true'(默认为false)
3. 手动连接 如果您的某些页面需要数据库连接,您可以通过在需要该功能的任何函数中添加此行代码或在其类构造函数中使其全局可用来手动连接到数据库,例如:$this->database();
查询数据库
查询构建器类使您能够轻松地查询数据库,例如获取数据、插入数据、删除数据、WHERE子句、SELECT等。
1. get_data() 函数用于构建SQL SELECT,从表中检索所有记录并返回关联数组
返回 $this->db->get_data('mytable'); // SELECT * FROM mytable
2. where(),如果您要查找特定数据,可以使用where()函数进行读取、更新和删除查询。此函数使您能够使用关联数组设置WHERE子句
$this->db->where(['country' => 'USA']); //keys is field in table, values is condition // WHERE country = 'USA'; $this->db->get_data('user'); //SELECT * FROM user WHERE country = 'USA';
其他示例
$specific_data = [ 'country' => 'USA', 'city' => 'new york', 'type' => 'and' // 'type' by default is 'or', whenever you can change the type in end key/value, and make sure the type is at the end of the array ]; $this->db->where($specific_data); //keys is field in table, values is condition return $this->db->get_data('user'); //SELECT * FROM user WHERE country = 'USA' AND city ='new york';
3. select(),允许您编写查询的SELECT部分。如果您要从表中选择所有的(*),则不需要使用此函数。省略时,DojoMVC假定您想选择所有字段,并自动添加‘SELECT *’。示例:
$this->db->select(['country', 'city']); //write of an array not a string! return $this->db->get_data('user'); // SELECT country, city FROM user;
4. limit() 限制返回的行数,示例:
$this->db->limit(10) // LIMIT 10 return $this->db->get_data('user'); // SELECT * FROM user LIMIT 10
5. order_by() 设置ORDER BY子句。第一个参数包含您想要排序的列名(ASC或DESC)。
$this->db->order_by('country desc') // ORDER BY country DESC
如果您需要多个字段,示例:
$this->db->order_by(['country asc', 'city desc']) //write of an array! // ORDER BY country asc, city desc;
6. insert_data() 生成您提供的数据,并执行查询(插入数据),您只能使用关联数组到函数中,示例:
$data = [ 'name' => 'andy', 'country' => 'indonesia', 'city' => 'jakarta' ]; // keys is table name, values is a data you would like to insert to table. $this->db->insert_data('user', $data); // INSERT INTO user (name, country, city) VALUES ('andy', 'indonesia', 'jakarta');
此函数将返回布尔值,成功则为true,失败则为false。
7. delete_data() 删除SQL查询,示例:
$this->db->delete_data('user', ['id', '3']) // DELETE FROM user WHERE id = '3';
第一个参数是表名,第二个是WHERE子句,如果第二个参数为null(默认为null),则查询将执行为“DELETE FROM mytable”。
其他示例,使用where():
$this->db->where(['id' => '3']); // use where() $this->db->delete_data(user);
具体要删除的数据
$this->db->where(['id' = > 3, 'first_name' = > 'andy', 'last_name' => 'john']); || $this->db->delete_data(['id' = > 3, 'first_name' = > 'andy', 'last_name' => 'john']])
8. update_data() UPDATE SQL查询。生成更新字符串并根据您提供的数据执行查询,示例使用关联数组:第一个参数是表名,第二个参数是关联数组的写入数据,键是字段名,值是您要更改的数据,第三个是WHERE子句。
$data = [ 'field1' => 'value1', 'field2' => 'value2', 'field3' => 'value3' ]; $this->db->update_data('mytable', $data, ['id' => '5']);
其他示例
$this->db->update_data('user', ['first_name' => 'morgan', 'last_name' = > 'freeman'], ['first_name' => 'morgen']); // UPDATE user SET first_name = 'morgan', last_name = 'freeman', WHERE first_name = 'morgen';
其他示例使用方法where():如果您使用方法where(),则第三个参数不需要编写。
$data = [ 'first_name' => 'morgan' ]; $this->db->where(['first_name' => 'morgen']); $this->db->update_data('user', $data);