mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-04-30 15:52:17 +09:00
Support custom namespaces in ModuleHandler and related processes
This commit is contained in:
parent
9e13c5ee6e
commit
7502b7308b
4 changed files with 107 additions and 33 deletions
|
|
@ -242,6 +242,18 @@ class ModuleActionParser extends BaseParser
|
|||
}
|
||||
}
|
||||
|
||||
// Parse custom namespaces.
|
||||
foreach ($xml->namespaces->namespace ?: [] as $namespace)
|
||||
{
|
||||
$info->namespaces[] = strval($namespace['name']);
|
||||
}
|
||||
|
||||
// Parse custom prefixes.
|
||||
foreach ($xml->prefixes->prefix ?: [] as $prefix)
|
||||
{
|
||||
$info->prefixes[] = strval($prefix['name']);
|
||||
}
|
||||
|
||||
// Parse error handlers.
|
||||
foreach ($xml->errorHandlers->errorHandler ?: [] as $errorHandler)
|
||||
{
|
||||
|
|
@ -253,14 +265,23 @@ class ModuleActionParser extends BaseParser
|
|||
foreach ($xml->eventHandlers->eventHandler ?: [] as $eventHandler)
|
||||
{
|
||||
$attrs = self::_getAttributes($eventHandler);
|
||||
$def = new \stdClass;
|
||||
foreach (['before', 'after', 'beforeaction', 'afteraction'] as $key)
|
||||
{
|
||||
if (isset($attrs[$key]))
|
||||
{
|
||||
if (count($info->namespaces) && str_contains($attrs['class'], '\\'))
|
||||
{
|
||||
$namespace = '\\' . array_first($info->namespaces) . '\\';
|
||||
}
|
||||
else
|
||||
{
|
||||
$namespace = '';
|
||||
}
|
||||
|
||||
$def = new \stdClass;
|
||||
$def->event_name = (str_contains($key, 'action') ? 'act:' : '') . $attrs[$key];
|
||||
$def->position = str_starts_with($key, 'before') ? 'before' : 'after';
|
||||
$def->class_name = $attrs['class'];
|
||||
$def->class_name = $namespace . $attrs['class'];
|
||||
$def->method = $attrs['method'];
|
||||
$info->event_handlers[] = $def;
|
||||
break;
|
||||
|
|
@ -269,18 +290,6 @@ class ModuleActionParser extends BaseParser
|
|||
|
||||
}
|
||||
|
||||
// Parse custom namespaces.
|
||||
foreach ($xml->namespaces->namespace ?: [] as $namespace)
|
||||
{
|
||||
$info->namespaces[] = strval($namespace['name']);
|
||||
}
|
||||
|
||||
// Parse custom prefixes.
|
||||
foreach ($xml->prefixes->prefix ?: [] as $prefix)
|
||||
{
|
||||
$info->prefixes[] = strval($prefix['name']);
|
||||
}
|
||||
|
||||
// Return the complete result.
|
||||
return $info;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue