V2EX thenbsp 的所有回复 第 1 页 / 共 7 页
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX    thenbsp    全部回复第 1 页 / 共 7 页
回复总数  131
1  2  3  4  5  6  7  
能否远程或兼职?可以全天兼职,但不太想去上海,可以的话联系我,认真的,招聘要求基本符合,另外对汽车很感兴趣!

Gmail: [email protected]
Github: https://github.com/thenbsp
2016-08-29 22:25:46 +08:00
回复了 lml12377 创建的主题 程序员 Symfony 中 event 的 Listener 和 Subscriber 的区别是什么?
@lml12377

1 ,可以处理多个事件,即使是同一个 name ,也可以多次触发。
2 ,当然需要注册,在注册 Subscriber 的时候,内部才会调用 addListener ,否则只是一个 callable 对象,没有和 eventName 绑定关系。



最终这些 event 是以 eventName 为 key 存储在 EventDispatcher::listeners 属性上的二维数组,寻找指定 eventName 不需要遍历,但触发时需要遍历!

如果你仔细看过源码,你会发现第一个 callable 是不允许有返回值的(因为同一个事件可能会有多个 callable 被触发),因此我还专门自己写了个类似功能的事件管理。

https://github.com/thenbsp/wechat/blob/master/src/Event/EventListener.php

另外,这个组件相对不那么复杂,你可以使用 Composer 安装一下一步一步打印看看!
2016-08-25 16:15:49 +08:00
回复了 lml12377 创建的主题 程序员 Symfony 中 event 的 Listener 和 Subscriber 的区别是什么?
@thenbsp 最后一句写反了,应该是

listener 与 subscriber 的不同点在于,前者在定义阶段就指定了由谁来负责处理事件,而后者是在事件中去决定需要去捕获哪些事件(也就是 EventSubscriberInterface::getSubscribedEvents 方法),后者更灵活, Symfony 内部代码都是使用的 subscriber !
2016-08-25 16:12:44 +08:00
回复了 lml12377 创建的主题 程序员 Symfony 中 event 的 Listener 和 Subscriber 的区别是什么?
我不太会组织这些技术含义,只说说我自己的理解,希望能帮到你!

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpKernel/HttpKernel.php#L128

```
$event = new GetResponseEvent($this, $request, $type);
$this->dispatcher->dispatch(KernelEvents::REQUEST, $event);
```

EventDispatcher ,即调度器, dispatch 为动词,是指去调度(触发)某个事件,这个类似于 jQuery 的 trigger 和 angular 中的 $broadcast($emit)。

在这里 KernelEvents::REQUEST 为事件名称,$event 是事件实体对象(当前事件的相关参数,也可以使用 Symfony\Component\EventDispatcher\GenericEvent 方法),说直白一点,就是当发生 KernelEvents::REQUEST 的时候,去做一个件事情,并把 $event 当作参数传递过去,但是你会发现只是定义了事件,并没有说去做的事情是什么!

EventDispatcher 中还有一个方法, EventDispatcher::addListener($eventName, $listener, $priority = 0):

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/EventDispatcher/EventDispatcher.php#L102

这个 addListener (监听器)就是用来指定前面所说的:告诉事件调度器,在某个事件发生时去做什么,第二个参数就是事件处理,举个例子:

```
$this->dispatcher->addListener(KernelEvents::REQUEST, function(GetResponseEvent $event) {
$request = $event->getRequest();
var_dump($request->getClientIp());
exit;
});
```

我监听了 KernelEvents::REQUEST 事件,来获取当前请求对象中的 IP 地址,可以看到,在事件处理中的 $event 就是事件发生时,传传递过来的 GetResponseEvent 事件实体!

subscriber 与 listener 相同的,在 EventDispatcher::addSubscriber 内部去掉用了 addListener 方法,看源码:

https://github.com/symfony/symfony/blob/master/src/Symfony/Component/EventDispatcher/EventDispatcher.php#L102

subscriber 与 listener 的不同点在于,前者在定义阶段就指定了由谁来负责处理事件,而后者是在事件中去决定需要去捕获哪些事件(也就是 EventSubscriberInterface::getSubscribedEvents 方法),后者更灵活, Symfony 内部代码都是使用的 subscriber !
2016-06-27 23:49:18 +08:00
回复了 dabpop139 创建的主题 PHP 有没有爱折腾的 PHP 和前端方向的朋友,诚心求组队?
我跟你差不多,喜欢折腾 PHP 和前端,欢迎关注: https://github.com/thenbsp
2016-06-22 18:49:17 +08:00
回复了 duanduang 创建的主题 分享创造 小短-我们都爱动态图,出了个 2.0 版本。
唉,我想说我之前也做了一个这和类的网站,后来又下线了,跟你这类型一模一样。域名叫 giffans.com ,后来域名到期了也没续。
2016-06-13 21:48:46 +08:00
回复了 nonfu 创建的主题 PHP Laravel 5 岁了, Happy Birthday!
我用 Symfony3 !
2016-06-03 16:51:32 +08:00
回复了 xuhao360 创建的主题 问与答 网上看到的 考考大家
@whiteskin 找出去的 65 你不算进?
1  2  3  4  5  6  7  
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1382 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 31ms UTC 17:04 PVG 01:04 LAX 10:04 JFK 13:04
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86