zoukankan      html  css  js  c++  java
  • php_mvc实现步骤六

    shop34-1-目录布局

    存在项目的根目录 shop34

    框架代码与应用程序代码划分

    框架代码:

    各个应用程序间可以通用的代码。

    应用程序代码:

    当前项目的业务逻辑实现的代码。

    分别创建两个子目录存储,框架与应用程序代码:

    示例:框架内的代码:

    入口文件在站点根目录

    平台platform的划分

    功能的聚合!

    称为:模块module,分组group

    辨析

    前台,后台。

    美工,程序。

    需要将实例代码,作为测试test平台进行处理的话,应该为test平台建立平台子目录

    MVC的划分

    功能由MVC三部分实现的,因此将某个平台下,分成:

    当前平台下的 控制器,模型,视图 文件进行分别管理!

    例如

    整体目录布局

    Shop34/

    Index.php入口文件

    Application/应用程序目录

    Front/前台

    Back/后台

    Test/测试平台

    Model/模型

    View/视图

    Controller/控制器

    Framework/框架代码目录

    MySQLDB.class.php数据库操作类DAO

    Factory.class.php工厂类

    Model.class.php基础模型

    Controller.class.php基础控制器类

    shop34-2-运转-平台分发

    运行起来

    配置一个可以访问到shop34虚拟主机:

    Apache/conf/extra/httpd-vhost.conf

    Apache restart

    Hosts

    修改需要载入的文件路径

    如果相对路径,注意当前目录。

    当前目录不是代码所在文件的目录代码不是在文件中运行,而是在内存中)。

    当前位置由浏览器所请的脚本来确定(当前PHP处理脚本,第一个处理的文件位置,被视为当前工作目录)。

    可见单入口程序,所有的相对地址,都是相对于入口文件地址而言的。

    分发参数p,确定当前平台

    URL

    测试平台比赛列表功能:

    Index.php?p=test&c=Match&a=list

    前台用户注册

    Index.php?p=front&c=User&a=register

    生成正确的URL

    入口文件index.php处理:

    Tip

    分发参数共3

    P平台目录)

    C控制器类)

    A动作(方法)

    shop34-3-自动加载实现

    自动加载

    总结

    控制器(可增加)

    模型可增加)

    框架核心类确定的)

    对于所有的类,分成两方面考虑:

    :可以确定的类。(当自动加载方法确定,类文件已经确定了)

    :可以被增加的类。当自动加载方法确定时,没有办法确定

    已经确定的类,采用最简洁的方式进行加载。

    对于需要增加的类,需要通过类名 规律,完成其位置的判断,进而完成自动加载。

    规律是

    XXXController结尾的,控制器类,在当前平台下controller目录将其载入

    XXXModel结尾的,模型,当前平台下的model目录将其载入

    编码实现:

    入口中增加自动加载方法,并注册:

    实现 userAutoload

    核心类加载

    增加类(控制器,模型):

    测试

    项目所有对类文件的加载都删掉!

    shop34-4-路径常量

    目录地址常量

    项目中,使用目录常量的形式,管理项目中所需要的地址,通过拼凑,连接操作形成某个位置。

    使用目录常量

    作为项目的初始化阶段,开始初始化目录常量:

    先确定根目录,再拼凑确定子目录

    Index.php

    Tip:函数 getCWD()可以用来获得当前工作目录。Current Working Directory

    所有的涉及到文件地址的都有常量来完成:

  • 相关阅读:
    反射的高级运用:通过一个实体类,以及查询到数据库的DataReader,进行绑定
    windows平台下 反向代理 squid
    log4net 高级运用之:在页面级捕获可预见的异常,在全局应用程序类Global.asax中捕获未知的异常(更新log4net的样式和配置)
    IEnumerable的谨慎使用和IQueryable 的延迟执行
    ReSharper使用
    包含别人的dll,然后我们用类库再次封装成dll的时候的注意事项;源文件与模块生成时的文件不同;创建调试信息文件 ··PDB时发生意外的错误,进程无法访问文件,因为另一个程序正在使用此文件
    log4net使用(保存日志分别 到文本文件,smtp发送邮件,mssql数据库,mysql数据库)
    VC++中,CTime 与CString转换
    How to write a CV ?
    [转]VC解析XML使用CMarkup类解析XML
  • 原文地址:https://www.cnblogs.com/ybygb-geng/p/9894520.html
Copyright © 2011-2022 走看看