Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[5.x][RFC] CMSPlugin: Lazy subscriber interface and decorator #43658

Open
wants to merge 16 commits into
base: 5.2-dev
Choose a base branch
from
Prev Previous commit
Next Next commit
LazyServiceEventSubscriber
  • Loading branch information
Fedik committed Jun 14, 2024
commit 38c59232157a175edcee1e092e73e2b9bb3cf7cc
1 change: 1 addition & 0 deletions libraries/src/Plugin/PluginHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,7 @@ protected static function import($plugin, $autocreate = true, DispatcherInterfac
}

if ($plugin instanceof LazyEventSubscriberInterface) {
dump($plugin);
foreach ($plugin->getEventsAndListeners() as $eventName => $params) {
if (\is_array($params) && !\is_callable($params)) {
$callback = !\is_string($params[0]) && \is_callable($params[0]) ? $params[0] : [$plugin, $params[0]];
Expand Down
10 changes: 2 additions & 8 deletions plugins/system/debug/services/provider.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@

\defined('_JEXEC') or die;

use Joomla\CMS\Event\LazyServiceEventSubscriber;
use Joomla\CMS\Extension\PluginInterface;
use Joomla\CMS\Factory;
use Joomla\CMS\Plugin\PluginHelper;
Expand All @@ -32,8 +31,8 @@
*/
public function register(Container $container): void
{
$container->share(
Debug::class,
$container->set(
PluginInterface::class,
function (Container $container) {
return new Debug(
$container->get(DispatcherInterface::class),
Expand All @@ -42,11 +41,6 @@ function (Container $container) {
$container->get(DatabaseInterface::class)
);
}
)->share(
PluginInterface::class,
function (Container $container) {
return new LazyServiceEventSubscriber($container, Debug::class);
}
);
}
};
10 changes: 8 additions & 2 deletions plugins/system/webauthn/services/provider.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

use Joomla\Application\ApplicationInterface;
use Joomla\Application\SessionAwareWebApplicationInterface;
use Joomla\CMS\Event\LazyServiceEventSubscriber;
use Joomla\CMS\Extension\PluginInterface;
use Joomla\CMS\Factory;
use Joomla\CMS\Plugin\PluginHelper;
Expand Down Expand Up @@ -39,8 +40,8 @@
*/
public function register(Container $container)
{
$container->set(
PluginInterface::class,
$container->share(
Webauthn::class,
function (Container $container) {
$app = Factory::getApplication();
$session = $container->has('session') ? $container->get('session') : $this->getSession($app);
Expand Down Expand Up @@ -72,6 +73,11 @@ function (Container $container) {

return $plugin;
}
)->share(
PluginInterface::class,
function (Container $container) {
return new LazyServiceEventSubscriber($container, Webauthn::class);
}
);
}

Expand Down