Skip to content

Commit ef9ebc7

Browse files
author
reef-actor
committed
Simplify AbstractPlugin
Reduced function call overhead.
1 parent 5b6b59f commit ef9ebc7

File tree

1 file changed

+11
-56
lines changed

1 file changed

+11
-56
lines changed

src/Plugin/AbstractPlugin.php

Lines changed: 11 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
<?php
2-
32
namespace Proxy\Plugin;
43

54
use Proxy\Event\ProxyEvent;
65

76
abstract class AbstractPlugin {
8-
9-
// apply these methods only to those events whose request URL passes this filter
10-
protected $url_pattern;
11-
7+
128
public function onBeforeRequest(ProxyEvent $event){
139
// fired right before a request is being sent to a proxy
1410
}
@@ -26,56 +22,15 @@ public function onCompleted(ProxyEvent $event){
2622
}
2723

2824
final public function subscribe($dispatcher){
29-
30-
$dispatcher->addListener('request.before_send', function($event){
31-
$this->route('request.before_send', $event);
32-
});
33-
34-
$dispatcher->addListener('request.sent', function($event){
35-
$this->route('request.sent', $event);
36-
});
37-
38-
$dispatcher->addListener('curl.callback.write', function($event){
39-
$this->route('curl.callback.write', $event);
40-
});
41-
42-
$dispatcher->addListener('request.complete', function($event){
43-
$this->route('request.complete', $event);
44-
});
45-
}
46-
47-
// dispatch based on filter
48-
final private function route($event_name, ProxyEvent $event){
49-
$url = $event['request']->getUri();
50-
51-
// url filter provided and current request url does not match it
52-
if($this->url_pattern){
53-
if(starts_with($this->url_pattern, '/') && preg_match($this->url_pattern, $url) !== 1){
54-
return;
55-
} else if(stripos($url, $this->url_pattern) === false){
56-
return;
57-
}
58-
}
59-
60-
switch($event_name){
61-
62-
case 'request.before_send':
63-
$this->onBeforeRequest($event);
64-
break;
65-
66-
case 'request.sent':
67-
$this->onHeadersReceived($event);
68-
break;
69-
70-
case 'curl.callback.write':
71-
$this->onCurlWrite($event);
72-
break;
73-
74-
case 'request.complete':
75-
$this->onCompleted($event);
76-
break;
77-
}
25+
$event_listeners = [
26+
'request.before_send' => 'onBeforeRequest',
27+
'request.sent' => 'onHeadersReceived',
28+
'curl.callback.write' => 'onCurlWrite',
29+
'request.complete' => 'onCompleted',
30+
];
31+
32+
foreach ($event_listeners as $event => $listener) {
33+
$dispatcher->addListener($event, [$this, $listener]);
34+
}
7835
}
7936
}
80-
81-
?>

0 commit comments

Comments
 (0)