PHP 阅读 4925
PHP 第17章 MVC

PHP 第17章 MVC

2018-02-24 • lulubin

一、MVC简介

1.1、学习 mvc 的目的

  • 快速上手各大主流 PHP 框架,例如 yii 框架、thinkphp、ci 等

  • 快速适应多数公司的 web 开发需求

  • 逐步接触和了解 web 系统架构的只是,为日后成为系统结构的中坚力量做准备

1.2、mvc 工作流程

https://file.lulublog.cn/images/3/2022/08/xZ8L858Z288N8X0Ngznx38k80Wi3dx.png?sign=8833d5ac5f8edbbfa1f3f7bc09d79bd3&t=6afb2880

1.3、mvc 的优势

https://file.lulublog.cn/images/3/2022/08/G1r319536080t31PuU7m9FPrm0973P.png?sign=50cf70062cc3dec0ddbc7f60aa596691&t=6afb2880

1.4、mvc 的组成与运行原理

https://file.lulublog.cn/images/3/2022/08/lnDq8v2E5denDuVVzi9Bv3Q5wBd9hU.png?sign=020345d36d3012ab983804a55c582448&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/PL6Z17p631C16Z6PK8h81A8ksNs7Kh.png?sign=2cb1c8ae61a2161a3617880035995e4a&t=6afb2880

二、MVC 实例制作(1)

2.1、制作第一个控制器程序

https://file.lulublog.cn/images/3/2022/08/tkSsTtZgssw9g8S88cCz98gkgW9sR4.png?sign=7975afa491dfc770d45ea00749040385&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/ABW44zOV2MBr4cb22eWGWKhFk555Gh.png?sign=6a6c7959ba9044383d5474a7d6c1963f&t=6afb2880

2.2、制作第一个模型程序

https://file.lulublog.cn/images/3/2022/08/WlLO00qL62oZo3aHO3EQHA0U60cLqQ.png?sign=f8a3464b81fa892ff334202717988005&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/DBTA6tLyYl5pWYTt45zzt6A6a6ba5O.png?sign=f42357f03638790df37828e1024d7cad&t=6afb2880

2.3、制作第一个视图程序

https://file.lulublog.cn/images/3/2022/08/TU1ff4ftGLuZQi41Z7N1odioz1QnMd.png?sign=5b82ea3a4862e17d06e8e733dc698c93&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/BZ8E9h2m9FD927JzKbZbHtUebu999e.png?sign=743adda6f89c3143e5074a4e2e63e1f2&t=6afb2880

2.4、演示程序的效果

https://file.lulublog.cn/images/3/2022/08/lJ1t1J97R39979177oS10iar4113Ra.png?sign=e2c85ef685fb4b1568c704854f8a3f88&t=6afb2880

2.5、总结

https://file.lulublog.cn/images/3/2022/08/Hql4LER18taHmKmXr8Ga5Xtr81HQr8.png?sign=33634bbfbe4e1c2aec710d6a678ade43&t=6afb2880

2.6、代码下载

三、MVC实例制作(2)

3.1、入口程序介绍与系统目录的规范化

https://file.lulublog.cn/images/3/2022/08/p0KONltSk07BBscQtSZqGqgD7Dw3ZF.png?sign=ae9e584327c07080197f4f9086f21bd6&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/vZzLxKWbwbBl086uuLv8R8kv0k8XlN.png?sign=effcf2b14d1ff76d3762b77d20e14d24&t=6afb2880

3.2、简易调用及实例化控制器(统一调用控制器)

https://file.lulublog.cn/images/3/2022/08/m2cGZCMQ275Mm2g7G722MZ5MDcMAAd.png?sign=b919e5950e98d27d564e5844dfcaa392&t=6afb2880

3.3、简易调用及实例化模型(统一调用模型)

https://file.lulublog.cn/images/3/2022/08/qw9HyMyGIgkECCEG5G5ICWcWz5ISC5.png?sign=82567fab04fa406ac384f62555d104a7&t=6afb2880

3.4、简易调用及实例化视图(统一调用视图)

https://file.lulublog.cn/images/3/2022/08/ewsUN2rttHtBb6uri5rt6uSRRtrUrs.png?sign=823cd60b6c1af70f6eb60aa6984764a1&t=6afb2880

3.5、入口文件功能(重要)

https://file.lulublog.cn/images/3/2022/08/fgu5GtoxtgJOM4MgJGgjttuo2552OL.png?sign=190ae55d3a371db0845dfd337f6b6512&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/cyP2q4myQFmKMtp2fEpSqoFt2Q43SD.png?sign=c52d2a7cd37d2e11b8679082e74df3f0&t=6afb2880

3.6、代码下载

四、Smarty 模板引擎

4.1、视图引擎的介绍

https://file.lulublog.cn/images/3/2022/08/y4h8hvtgcwchodcymHdvwTqHdhDHch.png?sign=e96118ac3c9886229b59d723e6e36569&t=6afb2880

4.2、Smarty 的配置与实例化

smarty是一个模板引擎,使用smarty主要是为了实现逻辑和外在内容的分离,如果不使用模板的话,通常的做法就是php代码和html代码混编。使用了模板之后,则可以将业务逻辑都放到php文件中,而负责显示内容的模板则放到html文件中。
Smarty在执行display方法的时候,读取模板文件,并进行数据替换,生成编译文件,之后每次访问都会直接访问编译文件,读取编译文件省去了读取模板文件,和字符串替换的时间,所以可以更快,编译文件里时间戳记录模板文件修改时间,如果模板被修改过就可以检测到,然后重新编译(编译是把静态内容保存起来,动态内容根据传入的参数不同而不同)。
如果启用了缓存,则会根据编译文件生成缓存文件,在访问的时候如果有缓存文件并且缓存文件没有过期,则直接访问缓存文件。

test.tpl 可以随便命名,通常这样命名(代码)

https://file.lulublog.cn/images/3/2022/08/N9LBwnT0untBdkNdj24JYYB9DZJcN2.png?sign=afcc23a747d3fb174cec3b21550f4319&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/hY8947E38u289Jt3S9u993A848Q9aZ.png?sign=90a1a9960af954071b0bdbd231d978a9&t=6afb2880 https://file.lulublog.cn/images/3/2022/08/mYRGeR1frhGG1393r6gHD3Wx8d6CrX.png?sign=ea451f34f62756959fcf0df7c85ac115&t=6afb2880

4.3、Smarty 模板语法

①、Smarty 的基本语法

https://file.lulublog.cn/images/3/2022/08/PBr5ag55yzBlAAtMWGQ5ibBaer2arS.png?sign=7287c512c64e5f4bda533ae20778698f&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/xSuzVSois3u4uPTJVsv3jF44VVFUsf.png?sign=642e347e837f669dde8eb2214daf7662&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/PU7U5i6J7Du76a5aujk656A65AbIJ6.png?sign=d85e13a0e20d9cf0add3dc0b5178e401&t=6afb2880

②、Smarty的条件判断语句

https://file.lulublog.cn/images/3/2022/08/CrSnFFaAn37vq7zVhf37rq3QVvQrFF.png?sign=d969c80403542892610841e4ab2ce8f5&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/fT4N6ZzELg6gFCLLZj2TyOQlKceFPT.png?sign=9c18ec70bbd91dcd13435577116d615b&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/VOJMyKuNmmm5M544dnodOdoU8OMoyu.png?sign=ee35d69baf1c9ef1cad8c27248b4e5dd&t=6afb2880

③、Smarty的循环语句

https://file.lulublog.cn/images/3/2022/08/lGgRptrT45Rr57fh4P0Px9QQB837uG.png?sign=b22ba55b073dd4bd8b34172d7d91212a&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/RyPt3zg22jn11GNtl9FJ2PG2OTnwL1.png?sign=aef2e4e3fac547ac0e82daa3fc47a4f0&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/car2B84L4i1PJ2lAp7Plr4Ju4HP8Zm.png?sign=33b7e77e38e9cac6479ce13d75866de9&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/z6houN62xnJ2OzU6U302NunqN2Uxwn.png?sign=d1cbc1dcbe7c5ff8bbaa124cb024b242&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/jvotHBYX8g8tpPI3yXoyZYHphPV8xo.png?sign=c61d8e43594aaaef46c21fc1caa0253d&t=6afb2880 https://file.lulublog.cn/images/3/2022/08/tBK1GGcbY7jzNSGG3GwfJjc7CBoOCG.png?sign=854f6d76f532b4b1388d4a044e582721&t=6afb2880 

https://file.lulublog.cn/images/3/2022/08/edWH83fF9e22IWtkHk242VV29BKW42.png?sign=8d6bd3e2b31b32a308a62eb6bd1773fd&t=6afb2880

④、Smarty的文件引用

https://file.lulublog.cn/images/3/2022/08/s7RvJUfUU4V7oowu94cF994c4OfU27.png?sign=34672758c7b06e7550f41535b75018b1&t=6afb2880 https://file.lulublog.cn/images/3/2022/08/FLYT2lTf82y8iL2I8z934kyt782A4l.png?sign=6a42503129271ffd89b68137d4f63edb&t=6afb2880

⑤、Smarty类和对象赋值与使用

https://file.lulublog.cn/images/3/2022/08/bR2WbVsp6WBBCVVQhq4V266026Pt66.png?sign=54b6065a9668c1643c7165f5381ebf0a&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/TddvNv7CHZuUUuuj0cnNP4d4umacVd.png?sign=3e3eec72e1dd103c276d8381cf5d5145&t=6afb2880

⑥、Smarty函数的使用

https://file.lulublog.cn/images/3/2022/08/ABOAn0UJuA83dA6ooodXJiu480oxia.png?sign=80a646e58f57a55876984e548af22b63&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/Kox82GuObP2KOAXoaTKE88Gb9exX8k.png?sign=b6956032d78157aadb815fbe060cb65e&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/k1t5553z51Jhl01L1JdF1dzJ3Z1L8J.png?sign=b066bf9600a30de594879360812b7bc7&t=6afb2880 

https://file.lulublog.cn/images/3/2022/08/H98r2aRI8t389AnjHqT3fM2f7t03mJ.png?sign=78d80acbac73686629e0fbe1d64555c3&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/M8uEtVg1KV72i71GPgeeG3dFv3DGI7.png?sign=426aae634e83fd1f64ff2cdf9d2786b1&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/S76jG7uDuy7bFKn2XCX5225Lyn6gK7.png?sign=fa42e1d5d1a5d81f9179e388afdc3efb&t=6afb2880

⑦、function函数插件的定义和使用(重要)

https://file.lulublog.cn/images/3/2022/08/kXefzjmGrNlX6jbrmrJ18g99E3MrgN.png?sign=3d3aac4745af3a7a8298132257fa5a5c&t=6afb2880

function是函数,是用来处理输入的数据并计算、输出结果

https://file.lulublog.cn/images/3/2022/08/a8883S55XuSui60i6PWZ6Z6uz8RAv5.png?sign=a1cd7eab45bde48345f4977c26255275&t=6afb2880

⑧、modifiers变量调节器插件的定义和使用(重要)

modifier是变量调节器,主要针对某个变量进行修改

https://file.lulublog.cn/images/3/2022/08/MhzlNlWQZ8PkHx98NxWwMewxNxlnNw.png?sign=e682f08a0116f6aeb07a44b2af4689bb&t=6afb2880

⑨、block function区块函数插件的定义和使用(重要)

block一次能渲染一段字符串

https://file.lulublog.cn/images/3/2022/08/e6wQxmPPpWx3t65CX3k3GTXnmpw6Ln.png?sign=6a8b5113f232df43249d45165f02fc71&t=6afb2880

4.4、Smarty mvc 实例

https://file.lulublog.cn/images/3/2022/08/A2iJnVUjIjUIXIM9tO338u6TUoUu1U.png?sign=7ba6587c61997724080e79a7f7e5e4a5&t=6afb2880

4.5 代码下载

五、MVC微型框架的建立

5.1、MySQL操作类

①、连接数据库

https://file.lulublog.cn/images/3/2022/08/v1ifL0GOTCOtUChgMBHrgzmg1hN0M6.png?sign=1acf0059f2242b573d6491fb4d40df19&t=6afb2880

②、获取数据

https://file.lulublog.cn/images/3/2022/08/H3F48Hf999cFvDjO0jh8jr1AHshAa5.png?sign=b86a5a6d87b92d4326e2741861d73fce&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/BT052Qkq0WTES20yeTwEYFE280Z52f.png?sign=eeb1ed08b249bc908f1db51a100f7ca8&t=6afb2880

③、添加数据

https://file.lulublog.cn/images/3/2022/08/Hi8zom6lmoB23WpPhPO26W2BZ2P2og.png?sign=ceb3b42d38aa33dc17987a5e5346cf7f&t=6afb2880

④、更新数据

https://file.lulublog.cn/images/3/2022/08/I9336OGNJe4ekW3o63wNgNS5N3Su3k.png?sign=1e2f1205ab964dc091801fa3115b03bb&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/BfExu59zJTeovzTJdETEjeDj9OSm6Z.png?sign=1700c4bda38a6e2cdf3f4682b7ff24c2&t=6afb2880

5.2、工厂模式初体验

工厂模式是 设计模式里的一种。MVC是架构模式。这里讲工厂模式是一个知识面拓展。 工厂模式可以给你系统带来更大的可扩展性和尽量少的修改量。

https://file.lulublog.cn/images/3/2022/08/eA3R99roW4r9o1A6w84wHAkAw12oRo.png?sign=1dc6fd2e2bf5d13bcb5820a443c69029&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/M9F6z15yZ4hKOf9lYYOk49LzFzJlL1.png?sign=a8158025a74689d7b93a06b6311ab1b2&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/lO45rj441jZq4wNq046bLBlBcRrbV4.png?sign=5f0e66a169a2eb30e3ac7634f4a8d050&t=6afb2880

5.3、框架组建简介

https://file.lulublog.cn/images/3/2022/08/C5zfdbbUFcdf622236FAF1P11P2f2D.png?sign=d26d90e42c3379fcd0edacfd95df32e3&t=6afb2880 https://file.lulublog.cn/images/3/2022/08/Em97PdwIFbDFikP2PC2RFfP222p6pr.png?sign=843e098b26a7014e1c44ac3fe9b3fe34&t=6afb2880

5.4、require文件和启动引擎程序实现

https://file.lulublog.cn/images/3/2022/08/Nh66fHZOT6Fst6A5LzrwH66RJa9h66.png?sign=04483c05253f9965e5f752162c4fbd1b&t=6afb2880

5.5、入口文件与配置文件优化

https://file.lulublog.cn/images/3/2022/08/BzObRb9r3iF6rp9e9Oie9pR6cbyM3R.png?sign=52228bde9a9d69b6a7d86dcb223bdee8&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/QfmffYHLy35dUUHPywFMdwlM38UvYu.png?sign=436ff6fa445efd6c0fc0f6ca73351603&t=6afb2880

5.6、代码下载

5.7、测试

http://127.0.0.1/mvc/admin.php?controller=admin&method=show

六、MVC微型框架的实际运用——mvc新闻管理系统

6.1、微框架简介

https://file.lulublog.cn/images/3/2022/08/y654S94Pe27T5s5Z9275sP596l5Zp1.png?sign=50837203d8a2414d22e7e4719e5cb861&t=6afb2880 https://file.lulublog.cn/images/3/2022/08/exnXgK4WHN364hXXWW4nB7z437qq7X.png?sign=d9378c843865a1d7a3ceeed1552ce9a3&t=6afb2880

6.2、系统需求分析

https://file.lulublog.cn/images/3/2022/08/xY1vN5Pp1n0e1A8Ii05w8po7qnnpNw.png?sign=ce26e02cccd7cf83dc4ef9f368677332&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/xiKmzxXmzwfNmggkGKKAmLGxMYG8AZ.png?sign=7eb4f124630a65539f5474afd173c24d&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/o4nVvN4Sas222r4ZFtHvVFVaQ4yvk2.png?sign=392e4865824214ea675803b43f8d8c60&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/kT8EmG558zZNzjtlLVn5zV8T85g5K9.png?sign=50b9b619ab5cfc39f78e062922639395&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/MD7jE7n7tIZtIdeT61W7tjtH7Idjih.png?sign=ae7743d278279f93044c91a2c8426681&t=6afb2880

6.3、后台模块的搭建

https://file.lulublog.cn/images/3/2022/08/b3l6GILZBDL36H6Z6Xoh6FL3i6xee6.png?sign=f55749ee880bee840f500c510eaf64a0&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/qXbFYSX8jJZJqn6N3nF7PG8DhSi4Ai.png?sign=7a542df72c0e4092b3b4f81f9c5e6cfa&t=6afb2880

6.4、后台登录功能的实现

https://file.lulublog.cn/images/3/2022/08/u7PlbpOPm22pJ9p9lP25uB1972Zp7Z.png?sign=9e302cb716bc5cbca4442e87efd00749&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/Eq6IZzgnNMinC96y5ChFCJ6cYxSs3s.png?sign=3539b480d8d02ee1cf76b61b03234132&t=6afb2880

6.5、后台首页的搭建

https://file.lulublog.cn/images/3/2022/08/JJhT8lJyYKlM8txk7xTjBmbeJ7L9Ty.png?sign=b67141a645f064c09a5ab4efc117d26a&t=6afb2880

6.6、后台新闻的发布和修改

https://file.lulublog.cn/images/3/2022/08/mRffEyo5URR5oEDpIi6RFIfZluOory.png?sign=fb1ce675dd597f9c7f02ecb4aeaf4c9f&t=6afb2880

6.7、后天新闻列表显示和删除

https://file.lulublog.cn/images/3/2022/08/SD9fFmz77fe7kTU7L47XA7LLEX4kFt.png?sign=a4e67729f568d888723e58fba9c5c846&t=6afb2880

6.8、前台页面展示

https://file.lulublog.cn/images/3/2022/08/SoL98o0Ge7aglz33oc9p00og9oG979.png?sign=487c5ba8e532b346fa0a434d56eb0dfe&t=6afb2880

https://file.lulublog.cn/images/3/2022/08/mppDwG774SoefPdQobs4edf88g7P8z.png?sign=c3beb13530703d741e7c4cd9276583d3&t=6afb2880

6.9、代码下载

PHP文章
带到手机上看