摘要: 使用行为(behavior)可以在不修改现有类的情况下,对类的功能进行扩充。通过将行为绑定到一个类,可以使得类具有行为本身所具有的属性和方法,就好像是类本来就具有的这些属性和功能一样。 好的代码设计,必须要同时满足可复用性、可维护性和可扩展性。设计原则中有一条非常重要的一条:类应该对扩展开放,对修改 阅读全文
posted @ 2018-03-13 09:50 米粒人生 阅读(551) 评论(0) 推荐(1) 编辑
摘要: 我们将事件稍稍加以抽象,发现事件具有某些共同特点,比如事件其实不是孤立存在,它只是某个流程或者工序的一个特殊的“点”,可以理解为时间点,也可以理解为逻辑的点;其次,事件上可以绑定一些“动作”,比如发送一条短信或者发送一个邮件;第三,我可以绑定,当然也可以解绑,如果我反感频频的短信提醒,我可以选择不发短信,我自己去查看账户余额;第四,这些动作和主流程往往并没有直接的关系,往往是“附加”的:我已经付完款了,你发短信或者不发,发邮件或者直接客服通知我其实影响不大,并不影响我购物这个行为本身——反正我已经付完款,预期不久就会收到商品了。 阅读全文
posted @ 2018-03-13 09:47 米粒人生 阅读(1031) 评论(0) 推荐(1) 编辑
摘要: 熟悉Nginx的小伙伴都知道,Nginx是一个非常好的负载均衡器。除了用的非常普遍的Http负载均衡,Nginx还可以实现Email,FastCGI的负载均衡,甚至可以支持基于Tcp/UDP协议的各种应用的负载均衡(比如MySQL,DNS等)。这些功能分别在Nginx的不同模块实现了。负载均衡可以看 阅读全文
posted @ 2018-03-13 09:45 米粒人生 阅读(1699) 评论(1) 推荐(10) 编辑
摘要: 写代码需要站在巨人的肩膀上,将主要精力集中在自己所需要实现的业务上面,避免反复搭建基础服务,重复造轮子。PHP框架就是这样一些巨人的“肩膀”,使得我们“站”得更高,“看”得更远。像PHP本身有着不断迭代和升级的历史一样,PHP框架也有着自己的发展历史,从简单到复杂,从低级到高级,从面向过程到面向对象 阅读全文
posted @ 2018-01-17 18:33 米粒人生 阅读(559) 评论(0) 推荐(0) 编辑
摘要: 虚拟服务器名(server name)是通过指令server_name来指定的。在《 Nginx是如何处理Request的?》一节中,我们讲到nginx分两步来匹配过来的Request请求: 1.选择server 2.选择location 在第1步中,其实也分两步: 1).匹配port 2).匹配s 阅读全文
posted @ 2018-01-17 18:29 米粒人生 阅读(622) 评论(0) 推荐(0) 编辑
摘要: nginx是如何匹配过来的请求,然后做处理的呢?这个匹配的过程可以分为两步: 1.选择server 2.选择location 选择server 仅仅匹配server name 加入Nginx的配置文件有这么几项: server { listen 80; server_name example.org 阅读全文
posted @ 2018-01-17 18:26 米粒人生 阅读(778) 评论(0) 推荐(0) 编辑
摘要: 学习任何一门学问,往往都是从起基本的概念学起。万丈高楼平地起,这些基本概念就是高楼的基石,必须做详尽的分析。我们知道,Yii2是一款脉络清晰的框架,理顺了基础的概念和基本功能,学习更高级和复杂的功能就容易多了。Yii2是一款纯面向对象的框架,它对类的功能做了扩充:PHP类的功能分为属性和方法,而Yi 阅读全文
posted @ 2018-01-17 18:22 米粒人生 阅读(1091) 评论(0) 推荐(0) 编辑