首页 > 代码库 > 结合公司的框架解决MVC的分离问题、【公司的入口和解决路由分发功能(url转为控制器和方法的使用)】

结合公司的框架解决MVC的分离问题、【公司的入口和解决路由分发功能(url转为控制器和方法的使用)】

1.面向对象的语法需要进行一次比较细节的总结 【到面向对象之后完成了基础语法的复习】

 

2.ecshop做电商的网站【模拟这个框架】 安装ecshop中的upload包【进行配置:注意gd和mysql】

安装成功之后ecshop并不兼容php-5.4以上的版本,报错太多

【现在需要考虑的是做一套系统实现】 【另外需要参考多个框架和项目(成型的系统二次开发)了解业务和思想】

【重点】 3.设计一个框架【MVC框架思维】

(1)框架设计中的第一条思路 首先实现逻辑和显示的分离【因为php本身是嵌入式的语言,所以使用逻辑和显示的分离时MVC的第一方面(view和controller之间的分离)】 【但是现如今看来smarty并没有什么优势:因为还是嵌入了smarty式的代码,和嵌入php代码并没有什么区别】 【将逻辑和view等文件分开,相互之间的访问只能使用包含,而不能直接使用请求进行访问(将框架中不同的业务处理的文件分离,并且放在不同的文件夹中,使得不能直接通过路径进行查看)】 【公司首先的入口是web下,然后再web的index中,引入了指定类下的方法,实现控制器和方法的访问控制,而保证了不会被外部http通过路径直接访问(这是框架设计中的重点)】

(2)逻辑代码和模型的分离【controller和model之间的分离】 【将取数据以及数据的基本处理放在模型中,控制器主要负责将数据和视图联系起来】 【公司将数据处理层分为组件,然后使用组件(compentent.php)调用数据库或者xml接口处理方法,实现数据处理层】 controller处理HTTP请求来的url,然后根据url中的参数访问指定的compentent文件,实现数据针对性查找,然后将得到的数据,assign到view文件中。完成完整的业务逻辑

以上就实现了MVC分离的框架思维。

MVC项目分层: (1)具体的业务逻辑的实现部分【就是对数据进行具体的操作】model (2)显示样式的实现部分。HTML+css+js。叫做view (3)负责整体流程控制【从请求开始】,负责调用model和view,称为controller

 

4.先从模型下手【model】 针对不同的数据【库的层面】分为不同的类。【模型类】 而模型类需要构建一个基类实现模型中的公共方法,然后令其他的模型类全部继承这个基类

【在例子中是: 子model类是对model基类进行继承 model基类通过类调用mysqldb类进行连接初始化【这块是单例】,将连接对象返回给model基类中的某个属性 使用基类中的属性在子model类中进行数据库操作【方法使用的也是mysqldb类中的方法】 】 【实质上的原理也就是,使用基类做了一层中间类,实现公共方法】

【公司中的项目中,每一个被分开的业务都构造了一个基类。controller中controller.php和compentent.php都是基类】 在基类中实现对该分开业务中的公共成员进行初始化【子类继承,便直接实现了这些初始化工作】

 

5.控制器处理【控制器关键是入口的处理!!】 将用户的请求url转化为控制器上指定方法的调用【这就是控制器上的入口的关键】

 

【公司实现入口】 【公司实现url转化为控制器和action的方法】【重点】 【公司使用的是web中的index.php实现对url的获取,然后根据url的不同,实例一个font对象,利用font中的dispatch方法实现转发(该方法中实现对控制器的引入和使用控制器调用指定方法)】

 

 

 

 

 

 

 

【问题】 测试【负载测试是现在需要提高的能力】 【apache ab等并发测试如何模拟】

【重点】 【关于之前遇到单例中对数据库连接中的认识错误】 【php与mysql连接的认识错误:http://www.nowamagic.net/librarys/veda/detail/95】 【mysql可以限制同一个用户的连接数,也能直接限制最大连接数。mysql的连接就相当于进程间通信,或者远程访问也一样进行访问。和TCP连接也没什么区别,也是一次请求和相应的过程】 【对php作为apache的一个模块有一个更加深入的理解】 【关于mysql的总结:http://fengshuohlc.blog.163.com/blog/static/173470504201010283810655/】

结合公司的框架解决MVC的分离问题、【公司的入口和解决路由分发功能(url转为控制器和方法的使用)】