Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
| 1 | <?php |
||
| 14 | class BrokerModel |
||
| 15 | { |
||
| 16 | /** |
||
| 17 | * @var AMQPConnection |
||
| 18 | */ |
||
| 19 | private $connection; |
||
| 20 | |||
| 21 | /** |
||
| 22 | * @var AMQPChannel |
||
| 23 | */ |
||
| 24 | private $channel; |
||
| 25 | |||
| 26 | /** |
||
| 27 | * @var AMQPExchange[] |
||
| 28 | */ |
||
| 29 | private $declaredExchangeInstances = []; |
||
| 30 | |||
| 31 | /** |
||
| 32 | * @var AMQPQueue[] |
||
| 33 | */ |
||
| 34 | private $declaredQueueInstances = []; |
||
| 35 | |||
| 36 | /** |
||
| 37 | * @var AMQPExchange[] |
||
| 38 | */ |
||
| 39 | private $usedExchangeInstances = []; |
||
| 40 | |||
| 41 | /** |
||
| 42 | * @var AMQPQueue[] |
||
| 43 | */ |
||
| 44 | private $usedQueueInstances = []; |
||
| 45 | |||
| 46 | /** |
||
| 47 | * @param AMQPConnection $connection |
||
| 48 | */ |
||
| 49 | 3 | public function __construct(AMQPConnection $connection) |
|
| 53 | |||
| 54 | /** |
||
| 55 | * @param string $exchangeName |
||
| 56 | * @param string $messageBody |
||
| 57 | * @param string $routingKey |
||
| 58 | * @param int $flags |
||
| 59 | * @param array $attributes |
||
| 60 | * |
||
| 61 | * @return bool |
||
| 62 | */ |
||
| 63 | public function publish( |
||
| 81 | |||
| 82 | /** |
||
| 83 | * @param string $exchangeName |
||
| 84 | * @param string $exchangeType |
||
| 85 | * @param int $flags |
||
| 86 | * @param array $arguments |
||
| 87 | */ |
||
| 88 | View Code Duplication | public function declareExchange($exchangeName, $exchangeType, $flags = null, $arguments = []) |
|
| 103 | |||
| 104 | /** |
||
| 105 | * @param string $queueName |
||
| 106 | * @param int $flags |
||
| 107 | * @param array $arguments |
||
| 108 | */ |
||
| 109 | View Code Duplication | public function declareQueue($queueName, $flags = null, $arguments = []) |
|
| 124 | |||
| 125 | /** |
||
| 126 | * WARNING: amqp 1.4.0 on x64 is bugged and will randomly hang when attempting to bind exchanges |
||
| 127 | * |
||
| 128 | * @param string $destinationName |
||
| 129 | * @param string $sourceName |
||
| 130 | * @param string $routingKey |
||
| 131 | */ |
||
| 132 | public function bindExchange($destinationName, $sourceName, $routingKey = '') |
||
| 146 | |||
| 147 | /** |
||
| 148 | * @param string $destinationName |
||
| 149 | * @param string $sourceName |
||
| 150 | * @param string $routingKey |
||
| 151 | * |
||
| 152 | * @throws \AMQPChannelException |
||
| 153 | * @throws \AMQPConnectionException |
||
| 154 | * @throws \AMQPExchangeException |
||
| 155 | */ |
||
| 156 | public function unbindExchange($destinationName, $sourceName, $routingKey = '') |
||
| 167 | |||
| 168 | /** |
||
| 169 | * @param string $queueName |
||
| 170 | * @param string $exchangeName |
||
| 171 | * @param null $routingKey |
||
| 172 | * @param array $arguments |
||
| 173 | */ |
||
| 174 | public function bindQueue($queueName, $exchangeName, $routingKey = null, $arguments = []) |
||
| 179 | |||
| 180 | /** |
||
| 181 | * @param string $queueName |
||
| 182 | * @param string $exchangeName |
||
| 183 | * @param null $routingKey |
||
| 184 | * @param array $arguments |
||
| 185 | */ |
||
| 186 | public function unbindQueue($queueName, $exchangeName, $routingKey = null, $arguments = []) |
||
| 191 | |||
| 192 | /** |
||
| 193 | * @param string $queueName |
||
| 194 | */ |
||
| 195 | public function purgeQueue($queueName) |
||
| 200 | |||
| 201 | /** |
||
| 202 | * @param string $queueName |
||
| 203 | * @param callable $callback |
||
| 204 | */ |
||
| 205 | public function consume($queueName, callable $callback) |
||
| 210 | |||
| 211 | /** |
||
| 212 | * It returns a cached exchange or a new one if none exists. |
||
| 213 | * |
||
| 214 | * @param string $exchangeName |
||
| 215 | * |
||
| 216 | * @return AMQPExchange |
||
| 217 | */ |
||
| 218 | View Code Duplication | private function produceExchangeInstance($exchangeName) |
|
| 234 | |||
| 235 | /** |
||
| 236 | * It returns a cached queue or a new one if none exists. |
||
| 237 | * |
||
| 238 | * @param string $queueName |
||
| 239 | * |
||
| 240 | * @return AMQPQueue |
||
| 241 | */ |
||
| 242 | View Code Duplication | private function produceQueueInstance($queueName) |
|
| 258 | |||
| 259 | private function ensureChannel() |
||
| 266 | |||
| 267 | private function ensureConnection() |
||
| 273 | } |
||
| 274 |