PHP 阅读 4871
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=0b3f7a0260d15355237a743256c3f71f&t=6acd0400

1.3、mvc 的优势

https://file.lulublog.cn/images/3/2022/08/G1r319536080t31PuU7m9FPrm0973P.png?sign=b24e197c2cb6422debd5a6f2ad95191b&t=6acd0400

1.4、mvc 的组成与运行原理

https://file.lulublog.cn/images/3/2022/08/lnDq8v2E5denDuVVzi9Bv3Q5wBd9hU.png?sign=f365759673b6e1632db5822bdbabe68b&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/PL6Z17p631C16Z6PK8h81A8ksNs7Kh.png?sign=63f9c128c3da210a461b912873f24ea3&t=6acd0400

二、MVC 实例制作(1)

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

https://file.lulublog.cn/images/3/2022/08/tkSsTtZgssw9g8S88cCz98gkgW9sR4.png?sign=02c5d01dbb21b756e43f191c7ad82cff&t=6acd0400

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

2.2、制作第一个模型程序

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

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

2.3、制作第一个视图程序

https://file.lulublog.cn/images/3/2022/08/TU1ff4ftGLuZQi41Z7N1odioz1QnMd.png?sign=7c99f80d50240c670dbe20625042db13&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/BZ8E9h2m9FD927JzKbZbHtUebu999e.png?sign=8adf5e81b765b90af5fb23b55b41dbae&t=6acd0400

2.4、演示程序的效果

https://file.lulublog.cn/images/3/2022/08/lJ1t1J97R39979177oS10iar4113Ra.png?sign=68f8898e778363703dad5cd2f81e44f9&t=6acd0400

2.5、总结

https://file.lulublog.cn/images/3/2022/08/Hql4LER18taHmKmXr8Ga5Xtr81HQr8.png?sign=4fa0e71f72e0be26d60e01990f406658&t=6acd0400

2.6、代码下载

三、MVC实例制作(2)

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

https://file.lulublog.cn/images/3/2022/08/p0KONltSk07BBscQtSZqGqgD7Dw3ZF.png?sign=9dbab27abf433b8aca17a81870bb1c70&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/vZzLxKWbwbBl086uuLv8R8kv0k8XlN.png?sign=4231c699cdf974fb2cf8b4d3fe71d3b1&t=6acd0400

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

https://file.lulublog.cn/images/3/2022/08/m2cGZCMQ275Mm2g7G722MZ5MDcMAAd.png?sign=1a832ee50444d2dbc2376372ceaf0980&t=6acd0400

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

https://file.lulublog.cn/images/3/2022/08/qw9HyMyGIgkECCEG5G5ICWcWz5ISC5.png?sign=99fae6120c6fe2a032e07a1cce25988f&t=6acd0400

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

https://file.lulublog.cn/images/3/2022/08/ewsUN2rttHtBb6uri5rt6uSRRtrUrs.png?sign=e3efc301415d8b980766376449e9bc33&t=6acd0400

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

https://file.lulublog.cn/images/3/2022/08/fgu5GtoxtgJOM4MgJGgjttuo2552OL.png?sign=960ce354bf4bfa9e0bbc1628cf380b7e&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/cyP2q4myQFmKMtp2fEpSqoFt2Q43SD.png?sign=7aded2b0c7eb9add7dce590279f44342&t=6acd0400

3.6、代码下载

四、Smarty 模板引擎

4.1、视图引擎的介绍

https://file.lulublog.cn/images/3/2022/08/y4h8hvtgcwchodcymHdvwTqHdhDHch.png?sign=12dcd32f825337288b675a5abafd63df&t=6acd0400

4.2、Smarty 的配置与实例化

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

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

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

https://file.lulublog.cn/images/3/2022/08/hY8947E38u289Jt3S9u993A848Q9aZ.png?sign=f9a63f5bcd25fc50084da94c0e3a0fef&t=6acd0400 https://file.lulublog.cn/images/3/2022/08/mYRGeR1frhGG1393r6gHD3Wx8d6CrX.png?sign=aa1117f071ddae1391b68963bd80e18b&t=6acd0400

4.3、Smarty 模板语法

①、Smarty 的基本语法

https://file.lulublog.cn/images/3/2022/08/PBr5ag55yzBlAAtMWGQ5ibBaer2arS.png?sign=a2edaf55305700bc941e474f95c4a4b4&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/xSuzVSois3u4uPTJVsv3jF44VVFUsf.png?sign=b2bd15f8ef119a5738a68581b978929f&t=6acd0400

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

②、Smarty的条件判断语句

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

https://file.lulublog.cn/images/3/2022/08/fT4N6ZzELg6gFCLLZj2TyOQlKceFPT.png?sign=99f1325b522f25bb37f11e5e08cce535&t=6acd0400

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

③、Smarty的循环语句

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

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

https://file.lulublog.cn/images/3/2022/08/car2B84L4i1PJ2lAp7Plr4Ju4HP8Zm.png?sign=821b720f2f4b4adb51b1853c745a7ec9&t=6acd0400

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

https://file.lulublog.cn/images/3/2022/08/jvotHBYX8g8tpPI3yXoyZYHphPV8xo.png?sign=149d9f0201b4181b85177cf5f8c7fdd4&t=6acd0400 https://file.lulublog.cn/images/3/2022/08/tBK1GGcbY7jzNSGG3GwfJjc7CBoOCG.png?sign=24c8ae0d474ce98aebb8e5c57bff83b4&t=6acd0400 

https://file.lulublog.cn/images/3/2022/08/edWH83fF9e22IWtkHk242VV29BKW42.png?sign=fd5a3d6e051a06b46953c6cd6e149cc2&t=6acd0400

④、Smarty的文件引用

https://file.lulublog.cn/images/3/2022/08/s7RvJUfUU4V7oowu94cF994c4OfU27.png?sign=5d3c12109335ade646ad4d1143a7fe84&t=6acd0400 https://file.lulublog.cn/images/3/2022/08/FLYT2lTf82y8iL2I8z934kyt782A4l.png?sign=0aad2e77cfdba97ac586318e62c2f11b&t=6acd0400

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

https://file.lulublog.cn/images/3/2022/08/bR2WbVsp6WBBCVVQhq4V266026Pt66.png?sign=995298fd9c79a1a252b248fa37999c21&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/TddvNv7CHZuUUuuj0cnNP4d4umacVd.png?sign=76ced17618468ffdcb85ec0c25cb189f&t=6acd0400

⑥、Smarty函数的使用

https://file.lulublog.cn/images/3/2022/08/ABOAn0UJuA83dA6ooodXJiu480oxia.png?sign=be23ca55041af66db9b0557c06a9d9b0&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/Kox82GuObP2KOAXoaTKE88Gb9exX8k.png?sign=5d0e13e08da8add9017382b9c30334f3&t=6acd0400

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

https://file.lulublog.cn/images/3/2022/08/H98r2aRI8t389AnjHqT3fM2f7t03mJ.png?sign=396168be7df7d97fce83e09fdb803780&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/M8uEtVg1KV72i71GPgeeG3dFv3DGI7.png?sign=d830c9616dc74623bebc8758338055e4&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/S76jG7uDuy7bFKn2XCX5225Lyn6gK7.png?sign=696ee78f7cfcfe37c9f9eae4a088bffd&t=6acd0400

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

https://file.lulublog.cn/images/3/2022/08/kXefzjmGrNlX6jbrmrJ18g99E3MrgN.png?sign=1c337ce7d07abfcc5a14d22797a3a61c&t=6acd0400

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

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

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

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

https://file.lulublog.cn/images/3/2022/08/MhzlNlWQZ8PkHx98NxWwMewxNxlnNw.png?sign=80cc067307764dfab7948bfe29d42f10&t=6acd0400

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

block一次能渲染一段字符串

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

4.4、Smarty mvc 实例

https://file.lulublog.cn/images/3/2022/08/A2iJnVUjIjUIXIM9tO338u6TUoUu1U.png?sign=07c5591efef4b460f32d769b0b6b5ae5&t=6acd0400

4.5 代码下载

五、MVC微型框架的建立

5.1、MySQL操作类

①、连接数据库

https://file.lulublog.cn/images/3/2022/08/v1ifL0GOTCOtUChgMBHrgzmg1hN0M6.png?sign=5f2aa0f1601a04b12cf91999bdf89b78&t=6acd0400

②、获取数据

https://file.lulublog.cn/images/3/2022/08/H3F48Hf999cFvDjO0jh8jr1AHshAa5.png?sign=5197e4789b07ecba75dbac8877a0242a&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/BT052Qkq0WTES20yeTwEYFE280Z52f.png?sign=92b5d5dee74d9c5e3056f3bff80b2b82&t=6acd0400

③、添加数据

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

④、更新数据

https://file.lulublog.cn/images/3/2022/08/I9336OGNJe4ekW3o63wNgNS5N3Su3k.png?sign=e0ce0aecbac8d4b72a6de5c83259ffcb&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/BfExu59zJTeovzTJdETEjeDj9OSm6Z.png?sign=93bb16b63d8c6c32688df27f1f71ea8c&t=6acd0400

5.2、工厂模式初体验

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

https://file.lulublog.cn/images/3/2022/08/eA3R99roW4r9o1A6w84wHAkAw12oRo.png?sign=f8ef83bb524ea0f2472ed7a156a4521a&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/M9F6z15yZ4hKOf9lYYOk49LzFzJlL1.png?sign=8cc0143a524386cf9cec2efae53ec0f7&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/lO45rj441jZq4wNq046bLBlBcRrbV4.png?sign=73fc4be87c04f2bea5a8a9a52b73cd69&t=6acd0400

5.3、框架组建简介

https://file.lulublog.cn/images/3/2022/08/C5zfdbbUFcdf622236FAF1P11P2f2D.png?sign=0f47b369e813a27f040979636b0ab35b&t=6acd0400 https://file.lulublog.cn/images/3/2022/08/Em97PdwIFbDFikP2PC2RFfP222p6pr.png?sign=0b7fff8ab5c7facb9258759c2268fb33&t=6acd0400

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

https://file.lulublog.cn/images/3/2022/08/Nh66fHZOT6Fst6A5LzrwH66RJa9h66.png?sign=3a9ccad751b55e77114dd368622e3c04&t=6acd0400

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

https://file.lulublog.cn/images/3/2022/08/BzObRb9r3iF6rp9e9Oie9pR6cbyM3R.png?sign=4b3b8849b119e0e0a4149b857115f6c2&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/QfmffYHLy35dUUHPywFMdwlM38UvYu.png?sign=3c850c6aeff873fa4ad5d7f50353d157&t=6acd0400

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=4b8cd18f66da0fbee7a7d24b7f7963a5&t=6acd0400 https://file.lulublog.cn/images/3/2022/08/exnXgK4WHN364hXXWW4nB7z437qq7X.png?sign=c3624bee3e37d04e7efbb8fa61ec2f81&t=6acd0400

6.2、系统需求分析

https://file.lulublog.cn/images/3/2022/08/xY1vN5Pp1n0e1A8Ii05w8po7qnnpNw.png?sign=38c040dc1095626062d7c86f41952d1c&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/xiKmzxXmzwfNmggkGKKAmLGxMYG8AZ.png?sign=615c682d70699f8420671fc88b53cf4a&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/o4nVvN4Sas222r4ZFtHvVFVaQ4yvk2.png?sign=d1506b1cd9dfc4a3231d5c1972c9ca86&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/kT8EmG558zZNzjtlLVn5zV8T85g5K9.png?sign=0de829e789e2bd04e7889fe76dd0f346&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/MD7jE7n7tIZtIdeT61W7tjtH7Idjih.png?sign=31ca1f3c0c8e0db8393a0e1eaeb6a850&t=6acd0400

6.3、后台模块的搭建

https://file.lulublog.cn/images/3/2022/08/b3l6GILZBDL36H6Z6Xoh6FL3i6xee6.png?sign=25072ca3c617c2e5b70591a3b3a31d43&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/qXbFYSX8jJZJqn6N3nF7PG8DhSi4Ai.png?sign=6a28492202c5d34368809ebfb87b41a0&t=6acd0400

6.4、后台登录功能的实现

https://file.lulublog.cn/images/3/2022/08/u7PlbpOPm22pJ9p9lP25uB1972Zp7Z.png?sign=e06b064be45804bdb94a28551796e013&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/Eq6IZzgnNMinC96y5ChFCJ6cYxSs3s.png?sign=ddba7d24780555e0f9bef971a05d234d&t=6acd0400

6.5、后台首页的搭建

https://file.lulublog.cn/images/3/2022/08/JJhT8lJyYKlM8txk7xTjBmbeJ7L9Ty.png?sign=374bc0de0c0a310b8e88bb92974732c7&t=6acd0400

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

https://file.lulublog.cn/images/3/2022/08/mRffEyo5URR5oEDpIi6RFIfZluOory.png?sign=9ce57b488a620357ecfb732f431971d5&t=6acd0400

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

https://file.lulublog.cn/images/3/2022/08/SD9fFmz77fe7kTU7L47XA7LLEX4kFt.png?sign=405ce0bd7d488eea33b6ac0c5c696478&t=6acd0400

6.8、前台页面展示

https://file.lulublog.cn/images/3/2022/08/SoL98o0Ge7aglz33oc9p00og9oG979.png?sign=311a17232ce2b778caf0bcc6a8a7b6e0&t=6acd0400

https://file.lulublog.cn/images/3/2022/08/mppDwG774SoefPdQobs4edf88g7P8z.png?sign=7fc2b2d8c6dc4a413139ba69a8f1f72e&t=6acd0400

6.9、代码下载

打赏

×

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开微信扫一扫,即可进行扫码打赏哦

PHP文章
带到手机上看