u php流行的mvc框架介绍
- zend framework(zend公司开发 、官方产品)
- thinkphp(国人开发)
- yii (外企用的比较多)
- cakephp
mvc框架把我们的程序分成三个部件
m(model模型)
v(view视图)
c(controller 控制器)
核心的设计思想: 把数据的输入,数据的处理,数据显示分开
? 很多公司自己开发mvc框架
u 为什么需要框架
因为不同公司对mvc的理解,可能区别,造成规范性,标准性有偏差,所以需要一个更加规范的方案来做程序开发.
框架: 这里理解,有zend framework 提供一个目录结构和规范,我们程序员只需要在规定的文件写自己的代码就 ok
- 规范性
- 开发效率
- 维护性(可读性)
u 快速体验案例
目的是让大家了解开发zend framework 项目的基本流程 ,配置如何处理.
我们可以看到这个欢迎界面即可.
开发步骤:
- 下载一个最新的zend framework库. 官方下载
- 创建zend framework工程
手工创建(麻烦)
使用zf.bat 程序创建
(1)进入到zf.bat所在目录 (dos)
(2) 使用命令 zf.bat create project 项目的全路径(d:/hspzf)
创建完后,项目的基本结构是
- 使用zend studio 创建一个空项目 hspzf
- 把你刚才创建项目的结构拷贝到hspzf项目中
- 引入zf库到hspzf项目中,拷贝到libary目录下
- 开始配置我们的apache,让它支持我们的zf框架
6.1 开启PDO和PDO相关数据库引擎
在php.ini文件
extension=php_pdo_mysql.dll [去掉分号]
6.2 开启Apache的 rewrite模块
在httpd.conf目录下
#启用rewrite功能
LoadModule rewrite_module modules/mod_rewrite.so
AllowOverride None 改成 All
- 配置虚拟主机
appserve
wamp
如果的开发环境是自定义安装:
在httpd.conf文件中
# Virtual hosts 启动虚拟主机的配置
Include conf/extra/httpd-vhosts.conf
在httpd-vhosts.conf中
#配置我们自己的虚拟主机
<VirtualHost *:80>
DocumentRoot "C:/myenv/apache/htdocs/hspzf/public"
ServerName myzf.com
DirectoryIndex index.php
<Directory />
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
在hosts中添加dns
- 重新启动 apache
- http//myzf.com
自己练习
原理分析(uml的时序图)
? 这里,在php项目中,我们通过对url的重新,可以完成整个项目只有一个入口.
在项目中添加一个 .htaccess 加入内容
RewriteEngine On
RewriteRule ^.*\. enter.php
在apache中启用rewrite机制
在httpd.conf目录下
#启用rewrite功能
LoadModule rewrite_module modules/mod_rewrite.so
AllowOverride None 改成 All
测试
问题?
区分大小写
提示,我们的Controller和它的方法 xxActoin , xx 要小写.
如何增加控制/视图/模型
步骤 先在
controller文件夹下添加一个
class xxxController extends Zend_Controller_Action{
//填写自己码
public function init(){
}
//自己的一些相应方法
public function xxAction(){
//代码
}
}
视图
在scripts 目录下,建立一个新的文件夹
xxx, 在该文件夹下可以创建新的视图 ??.phtml文件.
优化代码:
因为有些控制器,需要操作数据库,有些不需要,因此我们可以写一个父类
class BaseController extends Zend_Controller_Action{
public function init(){
//初始化代码
$url = constant ( "APPLICATION_PATH" ) . DIRECTORY_SEPARATOR . ‘configs‘ . DIRECTORY_SEPARATOR . ‘application.ini‘;
$dbconfig = new Zend_Config_Ini ( $url, "mysql" );
$db = Zend_Db::factory ( $dbconfig->db );
$db->query ( ‘SET NAMES UTF8‘ );
Zend_Db_Table::setDefaultAdapter ( $db );
}
}
如果某个控制器需要操作数据库
class xxController extends BaseController;
如果不需
class xxController extends Zend_Controller_Action{
}
u 使用zend framework完成一个投票系统
根据需求,我们分析应当有三张表.
--选项表 item
create table item(
id bigint unsigned primary key auto_increment,
name varchar(64) not null ,
description varchar(128) not null,
vote_count bigint unsigned) engine MyISAM
--投票的日志表 vote_log
create table vote_log(
id bigint unsigned primary key auto_increment,
ip varchar(20) not null,
vote_date bigint not null,
item_id bigint not null
) engine MyISAM
--过滤ip的表 filter
create table filter(
id bigint unsigned primary key auto_increment,
ip varchar(20)) engine MyISAM
2创建我们的项目
3.在zend studio 中创建空项目,然后把相关的文件拷贝
4.创建AdminController 控制器(管理后台的各种请求)
5.创建 HomeController 控制器(普通用户去投票)