示例#1
0
 /**
  * @param  PluginInterface   $plugin
  * @param  string            $capability
  * @throws \RuntimeException On empty or non-string implementation class name value
  * @return null|string       The fully qualified class of the implementation or null if Plugin is not of Capable type or does not provide it
  */
 protected function getCapabilityImplementationClassName(PluginInterface $plugin, $capability)
 {
     if (!$plugin instanceof Capable) {
         return null;
     }
     $capabilities = (array) $plugin->getCapabilities();
     if (!empty($capabilities[$capability]) && is_string($capabilities[$capability]) && trim($capabilities[$capability])) {
         return trim($capabilities[$capability]);
     }
     if (array_key_exists($capability, $capabilities) && (empty($capabilities[$capability]) || !is_string($capabilities[$capability]) || !trim($capabilities[$capability]))) {
         throw new \UnexpectedValueException('Plugin ' . get_class($plugin) . ' provided invalid capability class name(s), got ' . var_export($capabilities[$capability], 1));
     }
 }