zoukankan      html  css  js  c++  java
  • ZendFramwork笔记

    u  php流行的mvc框架介绍

    1. zend framework(zend公司开发 、官方产品)
    2. thinkphp(国人开发)
    3. yii (外企用的比较多)
    4. cakephp

    mvc框架把我们的程序分成三个部件

    m(model模型)

    v(view视图)

    c(controller 控制器)

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

    ☞ 很多公司自己开发mvc框架

    u  为什么需要框架

    因为不同公司对mvc的理解,可能区别,造成规范性,标准性有偏差,所以需要一个更加规范的方案来做程序开发.

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

    1. 规范性
    2. 开发效率
    3. 维护性(可读性)

    u  快速体验案例

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

    我们可以看到这个欢迎界面即可.

    开发步骤:

    1. 下载一个最新的zend framework库. 官方下载
    2. 创建zend framework工程

                手工创建(麻烦)

                使用zf.bat 程序创建

    (1)进入到zf.bat所在目录 (dos)

     (2) 使用命令 zf.bat create project 项目的全路径(d:/hspzf)

    创建完后,项目的基本结构是

    1. 使用zend studio  创建一个空项目 hspzf
    2. 把你刚才创建项目的结构拷贝到hspzf项目中
    3. 引入zf库到hspzf项目中,拷贝到libary目录下
    4. 开始配置我们的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

    1. 配置虚拟主机

    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

    1. 重新启动 apache
    2. 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 控制器(普通用户去投票)

  • 相关阅读:
    英文句子相似性判断
    机器学习(一)特征工程基本流程
    经典卷积神经网络(LeNet、AlexNet、VGG、GoogleNet、ResNet)的实现(MXNet版本)
    Google免费GPU使用教程(亲测可用)
    XGBoost、LightGBM的详细对比介绍
    终身机器学习:一种可持续学习的范式
    机器学习中安全与隐私问题(对抗性攻击)
    频繁模式挖掘中Apriori、FP-Growth和Eclat算法的实现和对比(Python实现)
    Webpack教程,更新中
    @babel/plugin-transform-runtime
  • 原文地址:https://www.cnblogs.com/fenle/p/4379442.html
Copyright © 2011-2022 走看看