original_string: public static function plugintype_class_callback(string $plugintype, string $interface, string $methodname, array $params) {
          $components = \core_component::get_plugin_list($plugintype);
          foreach (array_keys($components) as $component) {
              static::component_class_callback("{$plugintype}_{$component}", $interface, $methodname, $params);
          }
      }
code: public static function plugintype_class_callback(string $plugintype, string $interface, string $methodname, array $params) {
          $components = \core_component::get_plugin_list($plugintype);
          foreach (array_keys($components) as $component) {
              static::component_class_callback("{$plugintype}_{$component}", $interface, $methodname, $params);
          }
      }
code_tokens: public static function plugintype_class_callback ( string $ plugintype , string $ interface , string $ methodname , array $ params ) { $ components = \ core_component :: get_plugin_list ( $ plugintype ) ; foreach ( array_keys ( $ components ) as $ component ) { static :: component_class_callback ( "{$plugintype}_{$component}" , $ interface , $ methodname , $ params ) ; } }
docstring: Call the named method with the specified params on any plugintype implementing the relevant interface.
  
  @param   string  $plugintype The plugingtype to check
  @param   string  $interface The interface to implement
  @param   string  $methodname The method to call
  @param   array   $params The params to call
docstring_tokens: Call the named method with the specified params on any plugintype implementing the relevant interface .