From 9533440fb99586cfafc92c6b01bbc09549d14a53 Mon Sep 17 00:00:00 2001 From: Bart Jaskulski <bjaskulski@protonmail.com> Date: Fri, 27 Sep 2024 12:07:14 +0200 Subject: [PATCH] feat: add ordered loader with priority option Signed-off-by: Bart Jaskulski <bjaskulski@protonmail.com> --- src/Binding/Loader/OrderedBindingLoader.php | 27 +++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/Binding/Loader/OrderedBindingLoader.php diff --git a/src/Binding/Loader/OrderedBindingLoader.php b/src/Binding/Loader/OrderedBindingLoader.php new file mode 100644 index 0000000..6ec899a --- /dev/null +++ b/src/Binding/Loader/OrderedBindingLoader.php @@ -0,0 +1,27 @@ +<?php +declare( strict_types=1 ); + +namespace WPDesk\Init\Binding\Loader; + +final class OrderedBindingLoader implements BindingDefinitions { + + private BindingDefinitions $loader; + + public function __construct( BindingDefinitions $loader ) { + $this->loader = $loader; + } + + public function load(): iterable { + $definitions = []; + foreach ( $this->loader->load() as $def ) { + $definitions[] = $def; + } + + usort( + $definitions, + fn ( $a, $b ) => $a->option( 'priority' ) <=> $b->option( 'priority' ) + ); + + yield from array_reverse( $definitions, false ); + } +} -- GitLab