分类 其他 下的文章

2016
02-18

依赖注入和控制反转是什么?

年前,@绵阳飞在群里发起了一个讨论,依赖注入和控制反转到底是什么?
我之前对依赖注入和控制反转也不甚理解,直至在学习Phalcon框架的过程中,发现在Phalcon文档中有一个篇幅通过代码示例的方式专门描述了依赖注入的原理。本文打算通过此文档中的代码示例来讲解什么是依赖注入(DI)和控制反转(IoC)。通过示例代码,来更加深入的了解这些概念。

接下来的例子有些长,但解释了为什么我们要使用依赖注入。所以绝对都是干货,请耐心读完,必会有所收获。

依赖的产生

首先,假设我们正在开发一个组件,叫SomeComponent,它需要执行的内容现在还不重要。 但是我们的组件需要依赖数据库连接。

<?php

class SomeComponent
{
    /**
     * 数据库连接是被写死在组件的内部
     * 因此,我们很难从外部替换或者改变它的行为
     */
    public function someDbTask()
    {
        $connection = new Connection(
            array(
                "host"     => "localhost",
                "username" => "root",
                "password" => "secret",
                "dbname"   => "invo"
            )
        );

        // ...
    }
}

$some = new SomeComponent();
$some->someDbTask();

从上面这个例子中,可以看到数据库连接是在组件内部建立的。在我们日常开发中,类似这样的依赖关系在项目中非常常见。但是这种方法其实是不太实用的;我们不能改变创建数据库连接的参数或者选择不同的数据库系统,因为数据库连接是在组件被创建时建立的。

查看全文 >
2016
02-15

奔跑吧,程序猿!

上个星期,收到了咕咚2016全国新年登高健身大会的奖牌。这是我在2015年加入跑步行动以来参加的第一场咕咚官方赛事,也是我第一次拿到与跑步这项运动相关的奖牌。虽然是阳光普照奖牌,但还是非常高兴,对我也是一种鼓励。跟大家分享一下奖牌图片:
run2.jpg

查看全文 >
2014
09-25

神兽保佑,永无BUG

贡献一段自己用的“神兽保佑,永无BUG”的注释代码:

           /** code is far away from bug with the animal protecting
            * 
            *      ┏┓   ┏┓
            *    ┏┛┻━━━┛┻┓
            *    ┃       ┃  
            *    ┃   ━   ┃
            *    ┃ ┳┛ ┗┳ ┃
            *    ┃       ┃
            *    ┃   ┻   ┃
            *    ┃       ┃
            *    ┗━┓   ┏━┛
            *      ┃   ┃神兽保佑
            *      ┃   ┃永无BUG!
            *      ┃   ┗━━━┓
            *      ┃       ┣┓
            *      ┃       ┏┛
            *      ┗┓┓┏━┳┓┏┛
            *       ┃┫┫ ┃┫┫
            *       ┗┻┛ ┗┻┛
            *
            */

查看全文 >
2014
09-16

佛祖保佑,永无BUG

贡献一段自己用的“佛祖保佑,永无BUG”的注释代码:

/**
 *                  _ooOoo_
 *                 o8888888o
 *                 88" . "88
 *                 (| -_- |)
 *                 O\  =  /O
 *              ____/`---'\____
 *            .'  \\|     |//  `.
 *           /  \\|||  :  |||//  \
 *          /  _||||| -:- |||||-  \
 *          |   | \\\  -  /// |   |
 *          | \_|  ''\---/''  |   |
 *          \  .-\__  `-`  ___/-. /
 *        ___`. .'  /--.--\  `. . __
 *     ."" '<  `.___\_<|>_/___.'  >'"".
 *    | | :  `- \`.;`\ _ /`;.`/ - ` : | |
 *    \  \ `-.   \_ __\ /__ _/   .-` /  /
 * ======`-.____`-.___\_____/___.-`____.-'======
 *                  `=---='
 * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 *                佛祖保佑       永无BUG
 *
 *        佛曰:
 *            写字楼里写字间,写字间里程序员;
 *            程序人员写程序,又拿程序换酒钱。 
 *            酒醒只在网上坐,酒醉还来网下眠;
 *            酒醉酒醒日复日,网上网下年复年。
 *            但愿老死电脑间,不愿鞠躬老板前;
 *            奔驰宝马贵者趣,公交自行程序员。
 *            别人笑我忒疯癫,我笑自己命太贱;
 *            不见满街漂亮妹,哪个归得程序员?
 *
 */
查看全文 >
微信扫一扫