V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
misinibaba
V2EX  ›  PHP

新人对于 PHP symfony2 的一些概念不是很清楚

  •  
  •   misinibaba · 2017-06-28 14:06:01 +08:00 · 1719 次点击
    这是一个创建于 2706 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1.event 的概念,比如在什么场景下会用到 event ? 2.监听的概念,同样是不清楚什么应用场景用到监听会比较好 3.DI (注入)的概念,是在需要用到的时候引入该服务吗?那跟一般的公共函数有什么区别呢?

    4 条回复    2017-07-05 01:58:57 +08:00
    cxbig
        1
    cxbig  
       2017-06-28 21:10:03 +08:00
    如果有一个复杂的工作流程,若干组件参与其中,那么在特定环节设置 Event,相当于告诉大家执行到哪一步了。
    其他的组件如果要在该环节参与到流程中去做一些工作,那么就用 Listener 监听该 Event。
    这样的设计是用来去耦合,你可以随时关闭一个旁路组件而不用改流程代码。

    注入是 OOP 的新概念,运用上比继承更灵活,核心组件定下一个蓝图、制定接口 API,具体的实施由下游组件来决定。
    cxbig
        2
    cxbig  
       2017-06-28 21:11:09 +08:00
    关于 PHP-DI 可以看看这个
    http://php-di.org/doc/understanding-di.html
    bombless
        3
    bombless  
       2017-07-05 01:50:21 +08:00 via Android
    注入一般是用来解耦的,让被依赖的和依赖的都能重新组合。否则就变成了客户代码要去依赖服务代码暴露的协议。

    实际使用中 php 做不到强制只用一个协议,所以我感觉就真的变成了只是一种约定了……
    当然 ide 也可以在这里起到强制约定的作用……配合文档注释
    另外借助代码生成倒是可以实现说强制用一个协议的……
    bombless
        4
    bombless  
       2017-07-05 01:58:57 +08:00 via Android
    噗,看了 cxbig 的链接想起来,di 也起到解耦依赖之间的依赖的问题
    感觉和包管理器有点像吧,根据名字把服务(库)链接起来
    另外也有点像值构造器? 233。
    想起来重构这本书有个地方吐槽说 java 里面构造器构造一个值总是需要定死构造出的值的类型这点很傻逼,这个也是 di 解决的一个点吧,就是根据一定的约束构造出一个值,但是不确定值的具体类型
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2707 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:33 · PVG 18:33 · LAX 02:33 · JFK 05:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.