首页 > 代码库 > 一个整体框架的结构分割,另外通过入口文件对include_path和面向对象的机制有了新的认识

一个整体框架的结构分割,另外通过入口文件对include_path和面向对象的机制有了新的认识

1.实现框架需要考虑的公共的方法: mysqldb、文件上传、图片处理和验证码、session、字符串处理等等的处理是每一个框架都需要协调处理

 

 

2.一个完整的项目过程: (1)完整主机【配置host指向文件的路径,实现虚拟域名的正常访问】【这一点不需要再做】mvcproject项目 (2)提取框架【主体项目分为框架(公共代码framework)和具体业务逻辑实现(app)】 在app目录下实现MVC的文件夹【一一进行对应】,在framework中放置公共的方法 【在配置文件上实现对这些访问路径的常量的设置,以及包含文件的自动加载函数的写作】【理清这个逻辑就好了】

 

3.平台概念【这里主要是前后台之间,但是pc平台和wap平台的显示代码是不一样的框架,使用的是接口进行数据一致】 就是针对pc平台,wap平台等做的项目兼容问题。 平台之间的数据一致性【这是关键】 以及前台后后台的项目进行分离【入口文件对前台文件夹和admin文件夹显示的内容进行区别显示】

【重点】 【入口文件处理rewrite处理请求和相关的项目的不同显示。这样能够避免运维的配置处理。】 【这样rewrite的自定义化更加灵活】

【针对web2.0的形式,后台编辑功能。wap端主要是接口进行数据的显示。pc和wap显示的项目的框架并不一致】

 

4.当目前为止对一个项目进行的分割: (1)对公共方法和业务逻辑的分割【framework和app】 (2)在app项目中对前台后后台代码进行分割【全部进行MVC处理】 (3)对app两个项目(前台后台都)进行MVC分割

这样的分割在入口文件中进行统一处理【多注意入口文件的转发和路径的控制】 这样就完成一个基本项目的大体分割

5.具体功能的实现: 【实现上基本基于MVC的结构进行页面逻辑的处理】 登录 数据库表的设计和访问验证【phpmyadmin通过mysqli这个扩展进行数据的处理】 多目录的类文件自动加载【关键:通过auto_load和include_path结合使用】【公司中使用的控制器和组件项目是默认自动加载,区别就在于,控制器使用基类实现实例化自动加载,而组件是在控制器需要访问时才实例化自动加载】【自动加载的机制需要我们使用统一的命名规则,这样才能实现】 项目中的管理路径【关键】【使用目录常量进行路径管理,在配置文件中实现声明和管理】【windows支持两种文件夹标示:所以程序中的反斜杠也能正常执行(所以程序中全部使用反斜杠或预定义常量进行声明)】【模板中的路径管理使用模板引擎进行发送assign,以及在公共控制器类中实现发送基础的路径。】 执行流程【重点:对一个url访问的流程深刻了解】【正因为有这样的流程,使得我们对一次url的访问中调用的模块代码从而实现逻辑的功能。这一点要充分认识到。与面向过程中的多分枝的情景相区别,这样的功能容易处理的多(性能上虽然有些影响)】【面向对象就是一种组织代码的方式,这一点要有认识。那么使用对象本身就是针对已经存在的代码进行同样的处理,到达要实现的逻辑】

在框架中理解面向对象更加深刻,执行的位置都在index.php中,因为都是针对这个文件进行的包含,调用其他文件实现业务逻辑。【面向对象的对象就是为了方便指向代码中的位置(所以有了很多的调用方法和限制方法),至于在代码组织层面上,使用继承,多态,封装就是它的特性】

【以上就是对这个框架的理解】

 

 

 

 

【include路径问题】 【解决包含文件include的路径问题:(其实也就是php查找磁盘上文件的处理机制)】 【php对于include的处理机制,只要使用./..等标记的,该相对路径就是针对代码执行的路径。在现实项目中,因为所有代码都是针对index.php文件处理的,所以所有的include的文件的路径都是相对于入口文件而言的。这也是使用入口的好处】 【不过现实使用时,其实使用的都是常量定义下的绝对路径】 【http://blog.csdn.net/oyd/article/details/2030293】 【include的机制:寻找包含文件的顺序先是在当前工作目录的相对的 include_path 下寻找,然后是当前运行脚本所在目录相对的 include_path 下寻找(http://blog.csdn.net/dyllove98/article/details/8635972)】

substr对字符串的定位【负数是从右往左进行匹配】【php操作字符串的函数需要注意】

【面向对象的认识】 【面向对象其实也就是一种对模块化编码的重新组织的一个过程,对程序的执行并没有任何的变化,只是一种更加好的组织和执行代码的方法。所以实例化和调用对象本身并没有太多意义,就相当于一个变量而已。将对象看成是数组就比较好理解。这样单例也是,每一个初始化的脚本中的对象才会被创建】 【在程序中使用面向对象,肯定会消耗性能,但是我们使用这种方式对开发速度和维护起来有太多的便利性。这也是我们采用这些的原因:设计模式】

一个整体框架的结构分割,另外通过入口文件对include_path和面向对象的机制有了新的认识