@@ -135,16 +135,17 @@ public function init_classes( $dir = '' ) {
135
135
continue ;
136
136
}
137
137
138
+ // Check if the class implements ModuleInterface before instantiating it
139
+ if ( ! $ reflection_class ->implementsInterface ( 'TenupFramework\ModuleInterface ' ) ) {
140
+ continue ;
141
+ }
142
+
138
143
// Initialize the class.
139
144
// phpcs:ignore Generic.Commenting.DocComment.MissingShort
140
145
/** @var ModuleInterface $instantiated_class */
141
146
$ instantiated_class = new $ class ();
142
147
143
- // Make sure the class is a subclass of Module, so we can initialize it.
144
- if ( ! in_array ( 'TenupFramework\Module ' , $ this ->class_uses_recursive ( $ instantiated_class ), true ) ) {
145
- unset( $ instantiated_class );
146
- continue ;
147
- }
148
+ do_action ( 'tenup_framework_module_init__ ' . $ slug , $ instantiated_class );
148
149
149
150
// Assign the classes into the order they should be initialized.
150
151
$ load_class_order [ intval ( $ instantiated_class ->load_order () ) ][] = [
@@ -173,42 +174,6 @@ public function init_classes( $dir = '' ) {
173
174
}
174
175
}
175
176
176
- /**
177
- * Returns all traits used by a class and its traits.
178
- *
179
- * @param object|string $class_to_search The class to check for traits.
180
- * @return array<string>
181
- */
182
- protected function class_uses_recursive ( $ class_to_search ) {
183
- if ( is_object ( $ class_to_search ) ) {
184
- $ class_to_search = get_class ( $ class_to_search );
185
- }
186
-
187
- $ results = [];
188
-
189
- foreach ( array_reverse ( class_parents ( $ class_to_search ) ? class_parents ( $ class_to_search ) : [] ) + [ $ class_to_search => $ class_to_search ] as $ class ) {
190
- $ results = array_merge ( $ results , $ this ->trait_uses_recursive ( $ class ) );
191
- }
192
-
193
- return array_unique ( $ results );
194
- }
195
-
196
- /**
197
- * Returns all traits used by a trait and its traits.
198
- *
199
- * @param object|string $trait_to_search The trait to check for traits.
200
- * @return array<string>
201
- */
202
- protected function trait_uses_recursive ( $ trait_to_search ) {
203
- $ traits_to_search = class_uses ( $ trait_to_search ) ? class_uses ( $ trait_to_search ) : [];
204
-
205
- foreach ( $ traits_to_search as $ trait ) {
206
- $ traits_to_search = array_merge ( $ traits_to_search , $ this ->trait_uses_recursive ( $ trait ) );
207
- }
208
-
209
- return (array ) $ traits_to_search ;
210
- }
211
-
212
177
/**
213
178
* Slugify a class name.
214
179
*
0 commit comments