韩顺平 PHP视频教程 zend framework 第1讲 ——第4讲 笔记心得

韩顺平 PHP视频教程 zend framework 1 zend介绍 zend快速入门

Mvc 框架 –zend framework

zend framework的简介

1 php流行的MVC框架介绍

a zend framework

b thinkphp(国人开发)

c yii(外企用的比较多)

d cakephp

m model模型

v view 视图

c controller控制器

核心的设计思想:把数据的输入,数据的处理,数据的显示分开。

框架:有zend framework 提供一个目录结构和规范,我们程序员只需要在规定的文件和位置写自己的代码就ok了。

优点:

a 程序更加规范

b 程序的开发效率提高了

c 程序的可读性增加

d 程序的可维护性增加了

不足:

配置比较复杂。

为什么有zend framework

zend framework的原理

zend framework版用户登录系统

zend framework的投票系统

zend framework购物车系统

Php发送电子邮件。

快速体验案例

目的是让大家开发zend framework项目的基本流程,配置如何处理。

配置成功后,可以看到欢迎界面即可。

开发步骤:

1 下载一个最新的zend framework

2 创建一zend framework工程

2.1 手工创建

2.2 Zf.bat创建

2.2.1 进入zf.bat所在目录

2.2.2 使用命令zf.bat create project 项目的全路径

2.2.3 zendstudio 创建

2.2.4 拷贝直接创建

2.2.5 引入库到项目中 library目录下库大库小不影响,因为php主要是编译

2.2.6 开始配置apache,让它支持apache框架

2.2.7 开启PDOPDO 相关的数据库引擎

Php.ini中开启extension=php_pdo_mysql.dll

如果是php5.2 应该直接启动extension=php_pdo.dll

Apache的配置文件httpd.conf配置文件,修改如下

LoadModule rewrite_module modules/mod_rewrite.so

修改AllowOverride None

AllowOverride All

韩顺平 PHP视频教程 zend framework 2 zend快速入门

配置虚拟主机:

如果开发环境是自定义安装:

启动虚拟主机,httpd.conf配置文件,修改如下

# Virtual hosts

Include "conf/extra/httpd-vhosts.conf"

Httpd-vhost.conf文件配置 配置我们自己的虚拟主机

#配置我们自己的虚拟主机

<VirtualHost *:80>

DocumentRoot "F:/xampp/htdocs/zendfrm/public"

ServerName harry.com

DirectoryIndex index.php http://harry.com/index.php

# This should be omitted in the production environment

SetEnv APPLICATION_ENV development

<Directory "F:/xampp/htdocs/zendfrm/public">

Options Indexes MultiViews FollowSymLinks

AllowOverride All

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

hosts中添加dns目录

harry.com

韩顺平 PHP视频教程 zend framework 3 zend原理剖析 zend整合数据库

Uml时序图

Httpwatch 抓取http协议包的工具。

Bootstrap.php 对所有控制器的初始化工作

IndexController.php 对一个控制器做的初始化工作

日志记录启动文件:

F:\xampp\htdocs\zendfrm\public\index.php12-07-26 05:31:58

F:\xampp\htdocs\zendfrm\application\Bootstrap.php12-07-26 05:31:58

F:\xampp\htdocs\zendfrm\application\controllers\IndexController.php12-07-26 05:31:58init..

F:\xampp\htdocs\zendfrm\application\controllers\IndexController.php12-07-26 05:31:58index..

用户登录后,显示消息列表。

创建数据库

/*

Navicat MySQL Data Transfer

Source Server : localhost_3306

Source Server Version : 50516

Source Host : localhost:3306

Source Database : testzf

Target Server Type : MYSQL

Target Server Version : 50516

File Encoding : 65001

Date: 2012-07-26 14:10:03

*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------

-- Table structure for `message`

-- ----------------------------

DROP TABLE IF EXISTS `message`;

CREATE TABLE `message` (

`message_id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`sender` varchar(64) NOT NULL,

`getter` varchar(64) NOT NULL,

`sendtime` datetime NOT NULL,

`content` varchar(2000) NOT NULL,

PRIMARY KEY (`message_id`)

) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

-- ----------------------------

-- Records of message

-- ----------------------------

INSERT INTO `message` VALUES ('1', '张三', '李海', '2012-07-19 14:01:33', '你好啊,还在吗?');

INSERT INTO `message` VALUES ('2', '李四', '张国荣', '2012-07-09 14:02:18', '风继续吹');

INSERT INTO `message` VALUES ('3', '回音哥', '郭德纲', '2012-07-26 14:02:39', '我的歌声里');

INSERT INTO `message` VALUES ('4', '李逍遥', 's', '2012-07-26 14:03:25', '真漂亮');

INSERT INTO `message` VALUES ('5', '张柏芝', '谢霆锋', '2012-07-27 14:04:39', '原谅我吧');

INSERT INTO `message` VALUES ('6', '周立波', '周瑾', '2012-07-30 14:05:13', '你不和我搭档了吗?');

INSERT INTO `message` VALUES ('7', '李云龙', '刘少奇', '2012-07-17 14:07:08', '我是华野的');

INSERT INTO `message` VALUES ('8', '毛总东', '', '2012-07-25 14:07:40', '全心全意为人民服务');

INSERT INTO `message` VALUES ('9', '', '', '2012-07-25 14:08:10', '发展是硬道理');

Zend一般不和smarty融合一起操作。因为它自己有。

韩顺平 PHP视频教程 zend framework 4 zend原理深度剖析

总控index.php每次都经过这。即使输入harry.com/uu,只要保证前面的域名不变化,怎么访问资源都会到总控。

重写机制 .htaccess

RewriteEngine On 启用重写机制

RewriteCond %{REQUEST_FILENAME} -s [OR]

RewriteCond %{REQUEST_FILENAME} -l [OR]

RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ - [NC,L]

RewriteRule ^.*$ index.php [NC,L]

. 除了\n的任意字符。

php项目中,我们通过对url的重写,可以完成整个只有一个入口的项目

.htaccess

多入口

RewriteRule ^.*$\.php enter.php

RewriteRule ^.*$\.html enter.html

Index发送给apache rewrite机制记录下来 首先调用总控——boot——

约定俗成

如果有错误 ErrorController.php 该控制器来处理,它是处理机制。我们的控制器 区分大小写。

xxAction 的格式 xx不能大写

总控使用了一点反射机制。

步骤

1 先在controllers文件下添加

<?php

class testController extends Zend_Controller_Action{

public function init(){

}

public function loginAction(){

//echo '用户登录';

$this->render("login");

}

}

优化代码:

Bootstrap.php 数据库初始化代码的优化。

抽象出来一个类

<?php

//做一个父类,专门供其它的Controller来继承

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);

}

}

你可能感兴趣的:(framework)