ExpressionDependency.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. /**
  3. * @link http://www.yiiframework.com/
  4. * @copyright Copyright (c) 2008 Yii Software LLC
  5. * @license http://www.yiiframework.com/license/
  6. */
  7. namespace yii\caching;
  8. /**
  9. * ExpressionDependency represents a dependency based on the result of a PHP expression.
  10. *
  11. * ExpressionDependency will use `eval()` to evaluate the PHP expression.
  12. * The dependency is reported as unchanged if and only if the result of the expression is
  13. * the same as the one evaluated when storing the data to cache.
  14. *
  15. * A PHP expression can be any PHP code that has a value. To learn more about what an expression is,
  16. * please refer to the [php manual](https://secure.php.net/manual/en/language.expressions.php).
  17. *
  18. * For more details and usage information on Cache, see the [guide article on caching](guide:caching-overview).
  19. *
  20. * @author Qiang Xue <qiang.xue@gmail.com>
  21. * @since 2.0
  22. */
  23. class ExpressionDependency extends Dependency
  24. {
  25. /**
  26. * @var string the string representation of a PHP expression whose result is used to determine the dependency.
  27. * A PHP expression can be any PHP code that evaluates to a value. To learn more about what an expression is,
  28. * please refer to the [php manual](https://secure.php.net/manual/en/language.expressions.php).
  29. */
  30. public $expression = 'true';
  31. /**
  32. * @var mixed custom parameters associated with this dependency. You may get the value
  33. * of this property in [[expression]] using `$this->params`.
  34. */
  35. public $params;
  36. /**
  37. * Generates the data needed to determine if dependency has been changed.
  38. * This method returns the result of the PHP expression.
  39. * @param CacheInterface $cache the cache component that is currently evaluating this dependency
  40. * @return mixed the data needed to determine if dependency has been changed.
  41. */
  42. protected function generateDependencyData($cache)
  43. {
  44. return eval("return {$this->expression};");
  45. }
  46. }