@@ -39,7 +39,16 @@ public static function getQueue($queue)
3939
4040 protected static function loadAndGetQueueClassName ($ queue_name )
4141 {
42- $ class_name = self ::loadAndReturnFullClassName ($ queue_name , 'Queue ' );
42+ $ class_name = '' ;
43+ if (!is_null (self ::$ queue_path ))
44+ {
45+ $ class_name = self ::loadAndReturnFullClassName (self ::$ queue_path , $ queue_name , 'Queue ' );
46+ }
47+ if (empty ($ class_name ) && !is_null (self ::$ queue_namespace ))
48+ {
49+ $ class_name = self ::getValidNameSpacedClassName (self ::$ queue_namespace , $ queue_name );
50+ }
51+
4352 if (empty ($ class_name ))
4453 throw new QueueNotFoundException ("Queue file/class does not exist: $ queue_name " );
4554 return $ class_name ;
@@ -140,7 +149,16 @@ public static function getWorker($worker_name)
140149
141150 protected static function loadAndGetWorkerClassName ($ worker_name )
142151 {
143- $ class_name = self ::loadAndReturnFullClassName ($ worker_name , 'Worker ' );
152+ $ class_name = '' ;
153+ if (!is_null (self ::$ worker_path ))
154+ {
155+ $ class_name = self ::loadAndReturnFullClassName (self ::$ worker_path , $ worker_name , 'Worker ' );
156+ }
157+ if (empty ($ class_name ) && !is_null (self ::$ worker_namespace ))
158+ {
159+ $ class_name = self ::getValidNameSpacedClassName (self ::$ worker_namespace , $ worker_name );
160+ }
161+
144162 if (empty ($ class_name ))
145163 throw new WorkerNotFoundException ("Worker file/class does not exist: $ worker_name " );
146164 return $ class_name ;
@@ -188,38 +206,45 @@ public static function backendFactory($type, $options=array())
188206 }
189207
190208 /**
209+ * @param array|string $path_prefix
191210 * @param string $org_class_name
192211 * @param string $class_suffix
193212 * @return string
194213 */
195- private static function loadAndReturnFullClassName ($ org_class_name , $ class_suffix ='' )
214+ private static function loadAndReturnFullClassName ($ path_prefix , $ org_class_name , $ class_suffix ='' )
196215 {
197216 $ full_class_name = '' ;
198- if (!is_null (self ::$ queue_path )) {
199- if ( !is_array (self ::$ queue_path ) ) {
200- self ::$ queue_path = array (self ::$ queue_path );
201- }
202- foreach (self ::$ queue_path as $ path ) {
203- $ classFile = $ path . '/ ' . $ org_class_name . $ class_suffix . '.php ' ;
204- if (is_file ($ classFile )) {
205- require_once $ classFile ;
206- return "\\" . $ org_class_name . $ class_suffix ;
207- }
217+ if (!is_array ($ path_prefix )) $ path_prefix = array ($ path_prefix );
218+
219+ foreach ($ path_prefix as $ path )
220+ {
221+ $ classFile = $ path . '/ ' . $ org_class_name . $ class_suffix . '.php ' ;
222+ if (is_file ($ classFile )) {
223+ require_once $ classFile ;
224+ return "\\" . $ org_class_name . $ class_suffix ;
208225 }
209226 }
210- if (!is_null (self ::$ queue_namespace )) {
211- if (!is_array (self ::$ queue_namespace )) {
212- self ::$ queue_namespace = array (self ::$ queue_namespace );
227+ return $ full_class_name ;
228+ }
229+
230+ /**
231+ * @param array|string $namespaces
232+ * @param $org_class_name
233+ * @return string
234+ */
235+ protected static function getValidNameSpacedClassName ($ namespaces , $ org_class_name )
236+ {
237+ $ full_class_name = '' ;
238+ if (!is_array ($ namespaces )) $ namespaces = array ($ namespaces );
239+
240+ foreach ($ namespaces as $ namespace )
241+ {
242+ if (!(strpos ($ namespace , "\\" ) === 0 )) {
243+ $ full_class_name = "\\" ;
213244 }
214- foreach (self ::$ queue_namespace as $ namespace )
215- {
216- if (!(strpos ($ namespace , "\\" ) === 0 )) {
217- $ full_class_name = "\\" ;
218- }
219- $ full_class_name .= $ namespace . "\\" . $ org_class_name ;
220- if (class_exists ($ full_class_name , true )) {
221- return $ full_class_name ;
222- }
245+ $ full_class_name .= $ namespace . "\\" . $ org_class_name ;
246+ if (class_exists ($ full_class_name , true )) {
247+ return $ full_class_name ;
223248 }
224249 }
225250 return $ full_class_name ;
0 commit comments