Skip to content

Commit 63e0eb3

Browse files
committed
Accept array of paths & namespaces for Queue & Worker.
1 parent c4a8576 commit 63e0eb3

File tree

1 file changed

+41
-36
lines changed

1 file changed

+41
-36
lines changed

src/PHPQueue/Base.php

Lines changed: 41 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -38,23 +38,9 @@ public static function getQueue($queue)
3838

3939
protected static function loadAndGetQueueClassName($queue_name)
4040
{
41-
$class_name = '';
42-
if (!is_null(self::$queue_path)) {
43-
$classFile = self::$queue_path . '/' . $queue_name . 'Queue.php';
44-
if (is_file($classFile)) {
45-
require_once $classFile;
46-
} else {
47-
throw new QueueNotFoundException("Queue file does not exist: $classFile");
48-
}
49-
$class_name = "\\" . $queue_name . 'Queue';
50-
}
51-
if (!is_null(self::$queue_namespace)) {
52-
if (!(strpos(self::$queue_namespace, "\\") === 0)) {
53-
$class_name = "\\";
54-
}
55-
$class_name .= self::$queue_namespace . "\\" . $queue_name;
56-
}
57-
41+
$class_name = self::loadAndReturnFullClassName($queue_name, 'Queue');
42+
if (empty($class_name))
43+
throw new QueueNotFoundException("Queue file/class does not exist: $queue_name");
5844
return $class_name;
5945
}
6046

@@ -149,31 +135,17 @@ public static function getWorker($worker_name)
149135

150136
protected static function loadAndGetWorkerClassName($worker_name)
151137
{
152-
$class_name = '';
153-
if (!is_null(self::$worker_path)) {
154-
$classFile = self::$worker_path . '/' . $worker_name . 'Worker.php';
155-
if (is_file($classFile)) {
156-
require_once $classFile;
157-
} else {
158-
throw new WorkerNotFoundException("Worker file does not exist: $classFile");
159-
}
160-
$class_name = "\\" . $worker_name . 'Worker';
161-
}
162-
if (!is_null(self::$worker_namespace)) {
163-
if (!(strpos(self::$worker_namespace, "\\") === 0)) {
164-
$class_name = "\\";
165-
}
166-
$class_name .= self::$worker_namespace . "\\" . $worker_name;
167-
}
168-
138+
$class_name = self::loadAndReturnFullClassName($worker_name, 'Worker');
139+
if (empty($class_name))
140+
throw new WorkerNotFoundException("Worker file/class does not exist: $worker_name");
169141
return $class_name;
170142
}
171143

172144
/**
173145
* @param \PHPQueue\Worker $worker
174146
* @param \PHPQueue\Job $job
175147
* @return \PHPQueue\Worker
176-
* @throws \PHPQueue\Exception
148+
* @throws \Exception
177149
*/
178150
public static function workJob(Worker $worker, Job $job)
179151
{
@@ -197,7 +169,7 @@ public static function workJob(Worker $worker, Job $job)
197169
* @param string $type Case-sensitive class name.
198170
* @param array $options Constuctor options.
199171
* @return \PHPQueue\backend_classname
200-
* @throws \PHPQueue\Exception
172+
* @throws \InvalidArgumentException
201173
*/
202174
public static function backendFactory($type, $options=array())
203175
{
@@ -209,4 +181,37 @@ public static function backendFactory($type, $options=array())
209181
throw new \InvalidArgumentException("Invalid Backend object.");
210182
}
211183
}
184+
185+
private static function loadAndReturnFullClassName($org_class_name, $class_suffix='')
186+
{
187+
$full_class_name = '';
188+
if (!is_null(self::$queue_path)) {
189+
if ( !is_array(self::$queue_path) ) {
190+
self::$queue_path = array(self::$queue_path);
191+
}
192+
foreach(self::$queue_path as $path) {
193+
$classFile = $path . '/' . $org_class_name . $class_suffix . '.php';
194+
if (is_file($classFile)) {
195+
require_once $classFile;
196+
return "\\" . $org_class_name . $class_suffix;
197+
}
198+
}
199+
}
200+
if (!is_null(self::$queue_namespace)) {
201+
if (!is_array(self::$queue_namespace)) {
202+
self::$queue_namespace = array(self::$queue_namespace);
203+
}
204+
foreach(self::$queue_namespace as $namespace)
205+
{
206+
if (!(strpos($namespace, "\\") === 0)) {
207+
$full_class_name = "\\";
208+
}
209+
$full_class_name .= $namespace . "\\" . $org_class_name;
210+
if (class_exists($full_class_name, true)) {
211+
return $full_class_name;
212+
}
213+
}
214+
}
215+
return $full_class_name;
216+
}
212217
}

0 commit comments

Comments
 (0)