1.下载:
2.安装:
http://127.0.0.1/qeephp/script/web_chili.php
在网页中输入如下信息:
输入应用程序名称: myapp
在何处创建应用程序 d:/wwwroot
要使用的应用程序模板: 虚拟主机应用程序模板
点击开始创建
3. 查看安装是否成功: http://127.0.0.1/myapp/
4. 认识目录:
myapp
---app 应用程序目录
---config 应用程序所有配置文件
---lib 应用程序下的所有第三方库文件
5. 命名规则
所有文件名小写
控制器命名规则:
app/controller/控制器名_controller.php
控制器类名: 首字母大写 命名规则通文件名相反 Controler_控制器名.php
动作名: public function action动作名(){ .......... }
默认调用: actionIndex()
模型命名规则:
app/model/模型名.php
app/model/behavior/模型行为插件代码
注意: 如果你的模型命名是 xxxx_yyyy.php
像这种命名规则是:
app/model/目录名/模型名.php
视图命名规则:
在视图view/目录下面 _elements 和_layouts。分别用于存储视图片段文件和布局视图文件。
视图下面的子目录名就是控制器名 页面名称就是控制器下的动作名称
6. 分析程序流程:
浏览器--->解析url路由--->调用相应的控制器--->view
|
--->model
7. 构建hello word
文件名:
myapp/_code/app/controller/hello_controller.php
控制器类:
class controller_hello extends Controller_Abstract {
public function actionMsg(){
echo 'hello word';
}
}
url路由:
http://127.0.0.1/myapp/index.php?controller=hello&action=msg
8. 准备开发:
在任何开发之前需要准备好你的数据库:
修改配置文件:
configs/database.yaml
9. 认识yaml:
QeePHP 为了方便开发者,大量使用了 YAML 格式的文件来存储配置信息。因此掌握阅读和书写 YAML 格式文档的基本知识是很有必要的。
YAML 格式本身具有非常强大的表达能力,常用的有下面几种:
名值对,例如 key => value,这和 PHP 中以字符串做键名的数组一样;
列表,例如 value1, value2,这和 PHP 中以数字做键名的数组一样;
多行文本。
名值对
最简单的名值对:
my_name: zhanghua #这个是注释哦
注意: ":"和值之间必须有至少一个空格。
它等价于php
array('my_name'=>'zhanghua')
嵌套的名值对
#### 首页显示设置
homepage:
# 首页内容缓存时间(秒)
cached_lifetime: 300
# 首页上显示多少条最新主题文章
topics_num: 2
# 首页上显示多少条最新社区活动
activities_num: 3
注意: cached_lifetime 等键是 homepage 键的次级,所以
cached_lifetime 前面有两个空格作为缩进。使用两个空格作为一级缩进
是YAML的约定,不能使用制表符(Tab)来代替,务必注意这一点。
等价于:
array(
'homepage' => array(
'cached_lifetime' => 300,
'topics_num' => 2,
'activities_num' => 3,
)
)
列表
简单的列表:
- value1
- value2
- value3
- [value1, value2, value3]
注意: 注意第二种写法前面的“-”必不可少,并且要跟随至少一个空格。
等价于:
array('value1', 'value2', 'value3')
名值对和列表的混用
名值对和列表混用是很常见的写法
# 后台管理菜单标签
admin_tabs:
'首页':
-
title: '主题文章'
udi: 'admin::topics/index'
-
title: '社区活动'
udi: 'admin::activities/index'
'项目':
-
title: '项目管理'
udi: 'admin::projects/index'
'应用':
-
title: '应用展示管理'
udi: 'admin::cases/index'
等价于
array(
'admin_tabs' => array(
'首页' => array(
array('title' => '主题文章', 'udi' => 'admin::topics/index'),
array('title' => '社区活动', 'udi' => 'admin::activities/index'),
),
'项目' => array(
array('title' => '项目管理', 'udi' => 'admin::projects/index'),
),
'应用' => array(
array('title' => '应用展示管理', 'udi' => 'admin::/cases/index'),
),
),
)
10. 使用脚手架.
QeePHP 提供了基于 Web 界面的工具来帮助开发者完成许多的controller/model的工作,尽量减少重复劳动。
http://localhost/myapp/_devel/scripts/websetup.php
控制器自动生成:
WebSetup 中选择
“代码生成器 -> 列出控制器 –> 创建新控制器”,
然后输入控制器名称“Tasks”后点击“创建控制器”按钮即可自动生成控制器的类定义文件。
在php5.4.x版本中解决qeephp源代码中 namespace错误 : 由于在php5.3以后 namespace 是默认关键字 所以需要重命名 在定义的时候和调用的时候都重新命名就ok 啦
在php5.4.x版本中解决qeephp源代码中 set_magic_quotes_runtime(0); 错误的解决方案:
if(get_magic_quotes_runtime())
{
// Deactive
set_magic_quotes_runtime(false);
}
*****************
完成之后:
Create file "D:\wwwroot\myapp\_code\app\controller\user_controller.php" successed.
Create directory "D:\wwwroot\myapp\_code\app\view\user" successed.
脚手架会自动为我们在app\controller\下面创建user_controller.php 以及相应的视图文件
模型自动生成:
模型类与表模型的规则
数据表: 建议使用 复数
模型类: 建议使用 单数
比如: users 表 对应模型是 User
mysql> use myapp_devel_db;
Database changed
mysql> create table users(
-> id int primary key auto_increment,
-> uname char(30) not null,
-> upwd char(30) not null,
-> uemail char(50) not null,
-> uaddres char(100) not null
-> )engine=myisam charset=utf8;
Query OK, 0 rows affected (0.05 sec)
完成之后:
Create file "D:\wwwroot\myapp\_code\app\model\user.php" successed.
11.正式编码之前的思考:
用对象来思考
QeePHP 应用中,模型的唯一用途就是封装业务逻辑,以便将逻辑从表现层中提取出来。
QeePHP 的 MVC 真正实现了逻辑与表现的分离。模型充分实现了业务逻辑,而表现与交互都由控制器和视图配合完成。
理解领域:
领域=问题+解决问题所需要的知识
需求分析:
需求分析的主要工作就是分析用户想要实现的功能,找出可行的解决方案,并且整理为下一步开发工作需要的资料
确定模型间的关系
对象间有三种最重要的关系:依赖、关联和泛化。
依赖是使用关系。例如“台灯”依赖“灯泡”来发光。
关联是对象间的结构关系。例如“用户”与一组“任务”相关。
泛化是对象间的继承。例如“VIP 用户”类是“用户”类的继承类。
按照上述的简单规则,我们可以列出模型应该具备的行为:
User模型:
login
登录
logout
注销
createTask
创建属于该用户的任务
loadTasks
载入属于该用户的任务
deleteTasks 删除用户
由于任务不可能脱离用户存在,所以大部分行为都集中在 user 模型中.
12. 开始编写代码
访问我们上面创建的控制器 User 中的 index方法
http://127.0.0.1/myapp/index.php?controller=user&action=index
13.编写view层
命名规则:
视图文件名: 控制器中的动作名称
视图文件目录: 控制器名
视图文件后缀名; .php
url() 函数
在视图中,我们使用了 url() 函数。这个函数在 QeePHP 框架中承担着非常重要的职责:生成有效的 URL 地址。
视图的动态部分使用php语法实现
在视图中加载静态 $_BASE_DIR
视图layout
存放地址: app/view/_layouts/布局名_layout.php
子类继承父类模板
<?php $this->_extends('_layouts/布局名_layout'); ?>
调用elements元素
存放地址: app/view/_elements/元素名_element.php
调用方式: <?php $this->_element('元素名'); ?>
----------------------------------
实现界面之后,就是模型了
QeePHP 是一个遵循“领域驱动开发”思想的框架。而领域驱动中,最重要的就是模型。我们的大多数功能都是和模型有关的.
先前创建的 User 模型只是半成品,现在我们需要对其进行完善。一个模型由几个方面组成:
属性:定义模型有哪些属性、属性的类型以及属性的行为和验证规则等
行为:添加实现业务逻辑需要的方法,让模型逐步逼近实际的需求
数据:由属性和存储模型属性的数据表组成,但属性不一定要和数据表一一对应
关系:模型需要互相配合来实现业务需求,因此关系也是模型的一部分
$data=Nav::find('nisshow=?','y')->order('norderBy desc')->getAll();
等价于 select * from table where (nisshow='y') order by norderBy desc
14. 修改路由
启用url路由:
1、讲工程目录中的 _htaccess 改名或复制为 .htaccess
2、修改 configs/environments.yaml 文件
dispatcher_url_mode: standard 改为 dispatcher_url_mode: rewrite
3、添加新的路由规则
实际上这个路由就可以用了。但是想要添加更多的路由规则可以根据默认的路由规则进行设置。实际上就是变量的取得而已。
_default_:
pattern: /:controller/:action/*
defaults:
controller: default
action: index
http://qee13.com/docs/qeephp-quickstart/ --教程