Yii2 源码学习 Behavior

Yii2的行为,用来在不修改组件主体代码的情况下,增强组件的功能。 行为可以将自己的方法以及属性注入到组件中。在组件中可以像使用自己的 方法和属性一样使用,通过$this直接调用。行为通过组件能响应被触发的事 件, 从而自定义或调整组件正常执行的代码。

10 Nov 2016 Category: PHP

Yii2 源码学习 Event

虽然PHP语言本身不能实现异步事件,但是并不代表事件在PHP中不是 一个非常有效的代码注入方式。TinkSNS中就有钩子,允许用户在不修 改主体业务代码的时候执行不同的操作。钩子对于一些活动,比如充 值送积分,充值打折扣。不同的活动,不一样,如果每次都要修改充 值业务的主体代码,不仅麻烦,而且容易产生bug。因此可以在充值成 功之后触发充值成功的事件,在事件处理中去处理相应的返现,优惠打 折操作。

30 Oct 2016 Category: PHP

Yii2 源码学习--yii\base\Object

在Yii2中,所有的类的都集成于基类Object。Object对象通过几个php的魔术方法, 实现属性获取,设置,属性是否存在,属性是否可设置的方法。

24 Oct 2016 Category: PHP

PHP 依赖注入

考虑一个问题,如果一个web应用需要一个日志服务,日志服务可以是文本,数据库或者邮件的形式, 而且日志需要将获取的信息格式化指定的形式。应用可以根据需要,任意切换日志服务是文本还是数 据库还是邮件。如果以传统的方式,日志记录的代码类似下面的形式:

18 Aug 2016 Category: PHP

PHP GC学习

在5.2及更早版本的PHP中,没有专门的垃圾回收器GC(Garbage Collection),引擎在判断 一个变量空间是否能够被释放的时候是依据这个变量的zval的refcount的值,如果refcount 为0,那么变量的空间可以被释放,否则就不释放。思考一个问题:

17 May 2016 Category: PHP

Yii 作为模块被调用

Yii以及其他PHP框架,通常是通过一个入口文件把框架类库,引入进来。 然后根据route找到指定的控制器执行业务逻辑。一般的框架都可以很容易的集成第三方类库。 可是,如果说,多个项目之间需要相互调用,而且多个项目之间不是用相同的框架写的,但是是同一个语言。 如果不是相同语言,就只好是各个框架之间开放不同的接口,通过rest或者soap的形式进行接口调用。 虽然把各个模块封装成接口,可以很大的降低项目之间的耦合。但是接口同时也包含代码调用的形式。 项目中用到了workman作为消息发送,业务逻辑采用yii处理。那么问题来了,workman如何调用yii

22 Apr 2016 Category: PHP

ubuntu 14.04 mysql Atlas 读写分离 环境配置安装

Atlas 是Qihoo 360, Web平台部基础架构团队在mysql_proxy基础上开发维护开发的一款mysql 中间件,360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。更多mysql 中间件可以参考 http://www.guokr.com/blog/475765/.

09 Mar 2016 Category: Developer

http,tcp,udp协议

  • tcp协议是面向连接的传输层网络协议
  • tcp数据传输之前需要与接收方建立连接,进行三次握手之后才可以传输数据
  • tcp传输是可靠的,因为数据传输之前,发送接收方需要建立连接,进行数据传输同步,应用于大量数据传输的场景,传输速度慢
  • tcp连接是有状态的,长连接,除非网络中断或主动断开,连接才会中断
  • tcp,客户端向服务器发送syn(syn=j)进入SYN_SEND状态,服务器回复ACK(ack=j+1),同时发送SYN(syn=k)进入SYN_RECV状态,客户端发送ACK(ack=k+1),进入ESTABLISTION状态

07 Mar 2016 Category: 基础