12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- <?php
- /**
- * \Reflection based plugin method list. Uses reflection to retrieve list of interception methods defined in plugin.
- * Should be only used in development mode, because it reads method list on every request which is expensive.
- *
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\Interception\Definition;
- use Magento\Framework\Interception\DefinitionInterface;
- class Runtime implements DefinitionInterface
- {
- /**
- * @var array
- */
- protected $_typesByPrefixes = [
- 'befor' => self::LISTENER_BEFORE,
- 'aroun' => self::LISTENER_AROUND,
- 'after' => self::LISTENER_AFTER,
- ];
- /**
- * Plugin method service prefix lengths
- *
- * @var array
- */
- protected $prefixLengths = [
- self::LISTENER_BEFORE => 6,
- self::LISTENER_AROUND => 6,
- self::LISTENER_AFTER => 5,
- ];
- /**
- * Retrieve list of methods
- *
- * @param string $type
- * @return string[]
- */
- public function getMethodList($type)
- {
- $methods = [];
- $allMethods = get_class_methods($type);
- if ($allMethods) {
- foreach ($allMethods as $method) {
- $prefix = substr($method, 0, 5);
- if (isset($this->_typesByPrefixes[$prefix])) {
- $methodName = \lcfirst(substr($method, $this->prefixLengths[$this->_typesByPrefixes[$prefix]]));
- $methods[$methodName] = isset(
- $methods[$methodName]
- ) ? $methods[$methodName] | $this->_typesByPrefixes[$prefix] : $this->_typesByPrefixes[$prefix];
- }
- }
- }
- return $methods;
- }
- }
|