LinkBindingFactory.php in Drupal 7 to 8/9 Module Upgrader 8
File
src/Routing/LinkBinding/LinkBindingFactory.phpView source
<?php
namespace Drupal\drupalmoduleupgrader\Routing\LinkBinding;
use Drupal\Component\Plugin\PluginManagerInterface;
use Drupal\drupalmoduleupgrader\Routing\Drupal7\RouteWrapper as Drupal7Route;
use Drupal\drupalmoduleupgrader\Routing\Drupal8\RouteWrapper as Drupal8Route;
/**
* Factory class to create link bindings, depending on the source route's type.
*/
class LinkBindingFactory {
/**
* @var \Drupal\Component\Plugin\PluginManagerInterface
*/
private $linkManager;
public function __construct(PluginManagerInterface $link_manager) {
$this->linkManager = $link_manager;
}
/**
* Factory method. Returns a link binding object appropriate for the source link type.
*
* @param \Drupal\drupalmoduleupgrader\Routing\Drupal7\RouteWrapper $source
* The source (Drupal 7) route.
* @param \Drupal\drupalmoduleupgrader\Routing\Drupal8\RouteWrapper $destination
* The destination (Drupal 8) route.
*
* @return mixed
* A link binding object; either an instance of this class or a subclass thereof.
*/
public function create(Drupal7Route $source, Drupal8Route $destination) {
if ($source
->isLink()) {
return new MenuLinkBinding($source, $destination);
}
elseif ($source
->isLocalTask() || $source
->isDefaultLocalTask()) {
return new LocalTaskLinkBinding($source, $destination, $this->linkManager);
}
elseif ($source
->isLocalAction()) {
if ($source
->isContextualLink()) {
return new LinkBinding($source, $destination);
}
else {
return new LocalActionLinkBinding($source, $destination);
}
}
}
}
Classes
Name | Description |
---|---|
LinkBindingFactory | Factory class to create link bindings, depending on the source route's type. |