1- <?php
1+ <?php //phpcs:disable SlevomatCodingStandard.Classes.SuperfluousTraitNaming.SuperfluousSuffix
22/**
33 * Base_Plugin class file.
44 *
99namespace Oblak \WP \Traits ;
1010
1111use Oblak \WP \Decorators \Hookable ;
12- use Oblak \WP \Traits \Singleton_Trait ;
1312
1413use function Oblak \WP \Utils \get_decorators ;
1514use function Oblak \WP \Utils \invoke_class_hooks ;
1817 * Enables basic DI and hooking functionality for plugins / themes
1918 */
2019trait Hook_Processor_Trait {
21-
2220 /**
2321 * Plugin textdomain
2422 *
@@ -33,8 +31,8 @@ trait Hook_Processor_Trait {
3331 * @param int $priority Hook priority.
3432 */
3533 public function init ( string $ hook = 'plugins_loaded ' , int $ priority = 10 ) {
36- add_action ( $ hook , array ( $ this , 'run_hooks ' ), $ priority );
37- add_action ( $ hook , array ( $ this , 'init_dependencies ' ), $ priority );
34+ \ add_action ( $ hook , array ( $ this , 'run_hooks ' ), $ priority );
35+ \ add_action ( $ hook , array ( $ this , 'init_dependencies ' ), $ priority );
3836 }
3937
4038 /**
@@ -55,24 +53,14 @@ public function run_hooks() {
5553 * Initializes the dependency dlasses
5654 */
5755 public function init_dependencies () {
58- $ di_data = array ();
59-
6056 foreach ( $ this ->get_dependencies () as $ dep_class ) {
61- $ dep_data = $ this ->get_dependency_data ( $ dep_class );
57+ $ dep = $ this ->get_dependency_data ( $ dep_class );
6258
63- if ( ! $ dep_data ) {
59+ if ( ! $ dep || ! $ dep [ ' conditional ' ]() ) {
6460 continue ;
6561 }
6662
67- $ di_data [ $ dep_data ['hook ' ] ][ $ dep_data ['priority ' ] ][] = wp_array_slice_assoc ( $ dep_data , array ( 'classname ' , 'conditional ' ) );
68- }
69-
70- foreach ( $ di_data as $ hook => $ priorities ) {
71- ksort ( $ priorities );
72-
73- foreach ( $ priorities as $ priority => $ deps ) {
74- add_action ( $ hook , fn () => $ this ->load_dependencies ( $ deps ), $ priority );
75- }
63+ \add_action ( $ dep ['hook ' ], static fn () => new $ dep_class (), $ dep ['priority ' ] );
7664 }
7765 }
7866
@@ -84,31 +72,12 @@ public function init_dependencies() {
8472 */
8573 protected function get_dependency_data ( string $ dep_class ): ?array {
8674 $ metadata = get_decorators ( $ dep_class , Hookable::class );
87- $ metadata = array_shift ( $ metadata );
75+ $ metadata = \ array_shift ( $ metadata );
8876
8977 return $ metadata ? array (
78+ 'conditional ' => $ metadata ->conditional ?? '__return_true ' ,
9079 'hook ' => $ metadata ->hook ,
9180 'priority ' => $ metadata ->priority ,
92- 'classname ' => $ dep_class ,
93- 'conditional ' => $ metadata ->conditional ,
9481 ) : null ;
9582 }
96-
97-
98- /**
99- * Loads the dependencies
100- *
101- * @param array<string, callable|class-string> $deps Array of dependencies.
102- */
103- protected function load_dependencies ( array $ deps ) {
104- $ deps = wp_list_pluck (
105- array_filter (
106- $ deps ,
107- fn ( $ dep ) => $ dep ['conditional ' ](),
108- ),
109- 'classname '
110- );
111-
112- array_walk ( $ deps , fn ( $ d ) => new $ d () );
113- }
11483}
0 commit comments