《深入解剖Yii2框架》前言

写代码需要站在巨人的肩膀上,将主要精力集中在自己所需要实现的业务上面,避免反复搭建基础服务,重复造轮子。PHP框架就是这样一些巨人的“肩膀”,使得我们“站”得更高,“看”得更远。像PHP本身有着不断迭代和升级的历史一样,PHP框架也有着自己的发展历史,从简单到复杂,从低级到高级,从面向过程到面向对象。

目前,比较流行的是以Laravel5.2+,Yii2,ZendFramework2.0,Symfony2等为代表的新一代框架。这一些框架,普遍和自己的“过去”有着很大的“决裂”,基本都吸收了当下最为流行的编码风格和设计模式,完成了“华丽转身”。而这些流行的框架,彼此相互学习,在设计上有非常多的相似之处,比如,在类的自动加载上,使用依赖注入容器等等。

在这些优秀的框架中,Yii2是比较突出的。Yii2的前身是Yii1,但是是重新写的,二者并不兼容。Yii2官方的定义是高性能,基于组件的PHP框架,其特性是快速、安全、专业,适合构建各种规模的web项目。但个人认为,Yii2还具有其他一些突出的优点:

1.简洁——Yii2编程哲学就是简洁优雅,代码非常简单易懂,就像其谐音“易”一样,易学易用;其其代码注释非常规范,IDE定位效果非常好。而且社区活跃,官方论坛有中文区,国内论坛人气也挺不错,知识获取容易。

2.清晰——相比其他的框架,Yii2设计的整个脉络非常清晰,有其鲜明的特点,容易梳理和掌握。比如,Yii2的基石是Object和Component(组件),对类的功能进行扩展,提出了属性(property),行为(behavior)和事件(event)三个基本概念,适用于框架的任何部分,一个类功能再复杂,都能这三个概念演化而成;再比如对类的提供上,统一用了依赖注入容器(DI Container)和服务定位器(Service Locater)来提供,避免用new的方式产生内存浪费和强耦合。像上面提出的几处,都是Yii2的基础,其他的各个重要的部分(比如请求,响应,数据库,缓存,Restful等)都是在这基石上像盖楼房一样搭起来。内在的逻辑链条是非常清楚的,因此通过掌握这些基础概念和用法,你就摸清了整个大厦的轮廓。因此对学习者来说,不仅容易上手,也很容易走进框架内部,吸收其精华思想为我所用,从知其然到知其所以然,从一个菜鸟高效的变成一个高手。

3.开放——Yii开发团队一直关注业内Web开发的最新技术,很注意吸收当下最为流行的技术。 可以说,近年来Web开发中最潮的技术都可以在Yii2身上或多或少的看到影子。比如类的自动加载,PRS规范,依赖注入,ActiveRecord等。一个跟得上潮流和趋势的框架,才具有生命力和吸引力,学习起来才有意思、有意义。

4.流水线风格——Yii2框架的组件,都有其生命周期,这和现实世界真实发生的事情是对应的上的,生命周期分为重要的几个“时间节点”,每个“时间节点”上会设定一个事件(Event),用户可以在这些事件上绑定事件处理器(Event Handler),程序流转到这一步便会触发,从而实现自己的意图。这其实是一种流水线作业的方式,Yii2的几乎各个部分都是这样实现的,各道“工序”都可以方便的增加,修改或者删除,从而实现你想要的定制化。

大体上说,一个PHP的框架至少要涉及到这些部分:请求,响应,路由,数据库,缓存,日志,异常,Session/Cookie, 认证(Authentication),授权(Authorization ),安全(Security),Http协议,队列,Restful API,测试等模块。一个框架是研究如何去组织代码的,并不能提高PHP本身的运行效率,甚至会牺牲PHP的运行效率来提高开发的效率。在实际项目中,这是笔划算的买卖。框架做不了语言本身都完成不了的事情,这是毋容置疑的,比如对数据库的处理的DAO层,本身是对PHP PDO功能的进一步封装。本人想帮助大家了解,那些非常优美的设计,是怎么从PHP手册里躺着的函数、方法一步步的变过来的。

《深入解剖Yii2框架》是一个系列。我采用“解剖”作为标题,是因为我采用的方式主要是对框架源代码进行逐行解读,从根本上理解框架运行机制;并且结合设计模式/设计原则对其进行分析,升华大家对编写代码的认识,然后结合个人的一些开发经验和教训谈谈在实战中的应用,使得大家从理论从新落地,获得实际的提升。

通过针对Yii2框架的分享,我希望能为大家达到以下两个目标: 
第一,从内涵上说——通过对Yii2的解剖,深入理解这个框架的编程思想,掌握各个重要组成部分的构成和用法 
第二,从外延上说——通过对这款典型框架的解剖,能举一反三的了解其他PHP框架甚至整个服务端所涉及的重要知识点和涉及内容 
能“举一反三”,是“解剖”的另外一层含义——麻雀虽小五脏俱全嘛,更何况Yii2框架并不小。

由于我本人水平有限,技术欠精,所思所写难免有所纰漏。这两个目标是本人学习之初为自己定的目标,现在大体上是实现了,因此我打算将自己的这部分经验分享出去,也帮助更多的朋友实现这两个目标,同时也希望获得大家的及时反馈,大家的反馈是我成长的最大的动力!

原文地址:https://www.cnblogs.com/minirice/p/digyii-readme.html

时间: 2024-10-07 15:24:49

《深入解剖Yii2框架》前言的相关文章

《App后台开发运维和架构实践》推荐序

软件开发工具的成长速度远远超过开发人员的成长速度,这是现实. 每个月,甚至每天,我们都可以见到新的类库.框架.工具.语言.它们或者极大地降低了开发的成本,或者极大地提升了开发的效率. 随之而来的问题就是,如何让开发人员妥善地运用好这些工具? 曾经有好几个做开发的同事跟我说:"写软件谁不会?从网上找些开源的类和项目来改改就是了".目前也确实充斥着这种"改改就是"的工作思维.介绍某个类库和项目如何安装和调用的文章俯拾皆是. 但是每种工具究竟有什么优缺点?适合用来解决什么

《App后台开发运维和架构实践》前言

笔者在2012年从开发电子商务网站转向了开发App后台,当时在一家做社交App的创业公司里工作,笔者和搭档都没有任何从事移动互联网开发的经验,不清楚App后台怎么架构,只能摸着石头过河,那时网络上只有一些零散的资料,当遇到问题时只能不断地摸索和思考,来找到解决问题的方法. 在从事开发App后台接近4年的时间中,笔者参与了两款社交App的开发,现在就职于bmob,从事云后台服务的研发工作,慢慢地对App后台的架构有了一些体会. 从2013年年底开始,笔者把工作笔记发表在CSDN博客专栏"App后端

《App 后台开发运维和架构实践》目录

ps:由于书的目录太长了,各大网店(京东,当当,亚马逊)都显示不完整,所以这里列出目录的完整版. 第1章 App后台入门 16 1.1 App后台的功能 16 1.2 App后台架构 17 1.3 App和App后台的通信 19 1.4 App后台和Web后端的区别 22 1.5 选择服务器 23 1.6 选择编程语言 24 1.7 快速入门新技术 25 1.7.1 思维模式 25 1.7.2 4种快速入门新技术的方法 25 1.8 App是怎样炼成的 26 1.8.1 项目启动阶段 26 1.

App 后台架构设计方案 设计思想与最佳实践

转载请注明出处:http://blog.csdn.net/smartbetter/article/details/53933096 做App做的久了,就想研究一下与之相关的App后台,发现也是蛮有趣的.App后台的两个重要作用就是 远程存储数据 和 消息中转.这里面的知识体系也是相当复杂,做好一个App后台也是需要长期锤炼的.本篇文章从 App 后台架构 的角度介绍.好了,下面进入正题: 说起架构,我们先看一下何为架构,百度百科是这样说的:架构,又名软件架构,是有关软件整体结构与组件的抽象描述,

基于 Docker 的微服务架构实践

本文来自作者 未闻 在 GitChat 分享的{基于 Docker 的微服务架构实践} 前言 基于 Docker 的容器技术是在2015年的时候开始接触的,两年多的时间,作为一名 Docker 的 DevOps,也见证了 Docker 的技术体系的快速发展.本文主要是结合在公司搭建的微服务架构的实践过程,做一个简单的总结.希望给在创业初期探索如何布局服务架构体系的 DevOps,或者想初步了解企业级架构的同学们一些参考. Microservice 和 Docker 对于创业公司的技术布局,很多声

Django开发运维后台(二):建立模型与更新数据

上一篇文章我已经新建了一个SaAdmin的APP,现在开始在这APP下面来code 1.修改setting.py的数据库连接: DATABASES = {     'default': {         'ENGINE':'django.db.backends.mysql',         'NAME': 'QjshAdmin',         'USER': 'root',         'PASSWORD': 'lihuipeng',         'HOST': 'localho

空格App亿元A轮融资背后:云上多场景技术架构实践与经验

直播视频: (点击图片观看) 幻灯片下载地址:https://oss.aliyuncs.com/yqfiles/382bc642fc0b621a9368138a74d8fd36.pdf 3月16日云栖社区在线实时分享顺利结束,本次由空格APP技术合伙人刘博分享了空格利用阿里云服务在搜索.推荐和数据挖掘业务场景下的探索实践.本次视频直播的整理文章.视频整理完毕,如下内容. 阿里云在空格 图一 空格服务端整体架构 在空格初始创业阶段,人员十分缺乏,但依靠着阿里云,空格两周便实现APP上线.空格服务端

现货!《PHP7实践指南:o2o网站与App后台开发》京东天猫有售

终于发售了,啥也不想说了,喜欢的或需要的就点击 链接 进去购买吧. 另外此书将作为 2017 PHP全球开发者大会 现场活动用书 天猫购书包邮 PHP7实践指南:O2O网站与App后台开发 数据库设计 PHP开发工程 适合作为企业内部培训.培训机构和大专院校的教学参考书 京东购书PHP7实践指南:O2O网站与App后台开发 陈小龙 PHP7语言编程教程书籍 php7 PHP全球开发者大会 2017 PHP 全球开发者大会 -百格活动 作者简介陈小龙,奇虎360软件工程师,是国内较早研究微信开发和

APP后台架构20191205

1.架构,架构与业务紧密相关,是有业务驱动的. 2.APP后台演进原则. App后台的架构是由业务规模驱动而演进的,App后台是为业务服务的,App后台的价值在于能为业务提供其所需要的功能,不应过度设计. 从项目的角度,当App访问量不大时,应该快速搭建App后台,让App尽快上线给用户提供服务,验证商业模式的正确性,同时快速迭代产品. 当App访问量不断上升,这时要在保证快速迭代的前提下,同时兼顾高性能和高可用. 当App访问量达到一定阶段后,增长曲线就会放缓,但业务变得更加复杂,对高性能和高

构建高并发高可用的电商平台架构实践

从各个角度总结了电商平台中的架构实践,由于时间仓促,定了个初稿,待补充完善,欢迎大家一起交流. 转载请声明出处:http://blog.csdn.net/yangbutao/article/details/12242441 作者:杨步涛 关注分布式架构.大数据.搜索.开源技术 QQ:306591368 技术Blog:http://blog.csdn.net/yangbutao 一. 设计理念 1.      空间换时间 1)      多级缓存,静态化 客户端页面缓存(http header中包