You are here

FieldValueFilter.php in Drupal 7 to 8/9 Module Upgrader 8

File

src/Utility/Filter/FieldValueFilter.php
View source
<?php

namespace Drupal\drupalmoduleupgrader\Utility\Filter;

use Pharborist\ArrayLookupNode;
use Pharborist\Node;
use Pharborist\Objects\ObjectPropertyNode;
use Pharborist\Variables\VariableNode;

/**
 * Filters for things that *look like* field accesses, e.g.
 * $foo->bar[LANGUAGE_NONE][0]['value']. This filter doesn't guarantee that
 * matched nodes actually ARE field accesses -- just that they have the proper
 * formation (S-foils in attack formation!...what, you don't like Star Wars?)
 */
class FieldValueFilter {

  /**
   * @var string
   */
  protected $variable;
  public function __construct($variable) {
    $this->variable = $variable;
  }

  /**
   * @return bool
   */
  public function __invoke(Node $node) {
    if ($node instanceof ArrayLookupNode) {
      $root = $node
        ->getRootArray();
      if ($root instanceof ObjectPropertyNode) {
        $object = $root
          ->getObject();
        if ($object instanceof VariableNode && $object
          ->getName() == $this->variable) {
          return sizeof($node
            ->getKeys()) >= 3;
        }
      }
    }
    return FALSE;
  }

}

Classes

Namesort descending Description
FieldValueFilter Filters for things that *look like* field accesses, e.g. $foo->bar[LANGUAGE_NONE][0]['value']. This filter doesn't guarantee that matched nodes actually ARE field accesses -- just that they have the proper formation (S-foils in…