From 079af378eda8289b52210aa774e2ba9b7f999442 Mon Sep 17 00:00:00 2001 From: Bart Jaskulski <bjaskulski@protonmail.com> Date: Fri, 27 Sep 2024 13:34:33 +0200 Subject: [PATCH] feat: add debug lodaer with dev notices Signed-off-by: Bart Jaskulski <bjaskulski@protonmail.com> --- src/Binding/Loader/DebugBindingLoader.php | 37 +++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/Binding/Loader/DebugBindingLoader.php diff --git a/src/Binding/Loader/DebugBindingLoader.php b/src/Binding/Loader/DebugBindingLoader.php new file mode 100644 index 0000000..286237d --- /dev/null +++ b/src/Binding/Loader/DebugBindingLoader.php @@ -0,0 +1,37 @@ +<?php +declare( strict_types=1 ); + +namespace WPDesk\Init\Binding\Loader; + +use Psr\Log\LoggerInterface; +use WPDesk\Init\Binding\Definition\UnknownDefinition; +use WPDesk\Init\Binding\Hookable; +use WPDesk\Init\Plugin\Plugin; + +/** + * Add some PHP notices at dev environment, when a definition is unrecognized. + */ +final class DebugBindingLoader implements BindingDefinitions { + + private BindingDefinitions $loader; + + public function __construct( BindingDefinitions $loader ) { + $this->loader = $loader; + } + + public function load(): iterable { + foreach ( $this->loader->load() as $definition ) { + if ( $definition instanceof UnknownDefinition ) { + @trigger_error( + sprintf( + 'Trying to bind unknown value "%1$s". Currently wp-init can handle only simple callables and classes implementing "%2$s" interface', + is_string( $definition->value() ) ? $definition->value() : json_encode( $definition->value() ), + Hookable::class + ), + \E_USER_NOTICE + ); + } + yield $definition; + } + } +} -- GitLab