@@ -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