Source of file Heuristic.php
Size: 3,173 Bytes - Last Modified: 2021-12-23T10:02:17+00:00
/var/www/docs.ssmods.com/process/src/code/Heuristics/Heuristic.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 | <?php namespace Seeder\Heuristics; use Seeder\ProviderCache; /** * Class Heuristic * @package Seeder\Heuristics */ class Heuristic { /** * @var */ public $name; /** * @var array */ private $options = array(); /** * @var null */ private $ignore = null; /** * @var bool */ private $cache = false; /** * @var bool */ private $noCache = false; /** * @var array */ private $conditions = array(); /** * @param $name */ public function __construct($name) { $this->name = $name; } /** * @param $condition */ public function addCondition($condition) { $this->conditions[] = $condition; } /** * @param $field * @return bool */ public function match($field) { foreach ($this->conditions as $condition) { if (!$condition->match($field)) { return false; } } return true; } /** * @return int */ public function getSpecificity() { return count($this->conditions); } /** * @param $field */ public function apply($field, $writer) { if (!$field->explicit) { // if a new provider then reset options if (isset($this->options['provider']) && class_exists($this->options['provider'])) { $providerClassName = $this->options['provider']; $provider = new $providerClassName(); $provider->setWriter($writer); if ($field->provider instanceof ProviderCache) { $field->provider->provider = $provider; } else { $field->provider = $provider; } $field->options = $this->options; } else { $field->options = array_merge($field->options, $this->options); } // if ignore is specified then set on field if ($this->ignore !== null) { $field->ignore = $this->ignore; } } if ($this->cache !== false) { if ($field->provider instanceof ProviderCache) { $field->provider->setCacheSize($this->cache); } else { $cache = new ProviderCache($field->provider, $this->cache); $field->provider = $cache; } } if ($this->noCache && $field->provider instanceof ProviderCache) { $field->provider = $field->provider->provider; } } /** * @param $options */ public function setOptions($options) { $this->options = $options; } /** * @param bool $ignore */ public function setIgnore($ignore = false) { $this->ignore = $ignore; } /** * @param bool $cache */ public function setCache($cache = false) { $this->cache = $cache; } /** * @param bool $noCache */ public function setNoCache($noCache = false) { $this->noCache = $noCache; } } |