NumberHelper.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace Tools\View\Helper;
  3. use Cake\Core\App;
  4. use Cake\Core\Exception\CakeException;
  5. use Cake\I18n\Number;
  6. use Cake\Utility\Hash;
  7. use Cake\View\Helper\NumberHelper as CakeNumberHelper;
  8. use Cake\View\View;
  9. /**
  10. * Overwrite to allow usage of own Number class.
  11. *
  12. * @mixin \Tools\Utility\Number
  13. */
  14. class NumberHelper extends CakeNumberHelper {
  15. /**
  16. * ### Settings:
  17. *
  18. * - `engine` Class name to use to replace Number functionality.
  19. * The class needs to be placed in the `Utility` directory.
  20. *
  21. * @param \Cake\View\View $view The View this helper is being attached to.
  22. * @param array<string, mixed> $config Configuration settings for the helper
  23. */
  24. public function __construct(View $view, array $config = []) {
  25. $config = Hash::merge(['engine' => 'Tools.Number'], $config);
  26. $engine = $config['engine'];
  27. $config['engine'] = Number::class;
  28. parent::__construct($view, $config);
  29. $this->setConfig('engine', $engine);
  30. $engineClass = App::className($engine, 'Utility');
  31. if ($engineClass === null) {
  32. throw new CakeException(sprintf('Class for %s could not be found', $engine));
  33. }
  34. $this->_engine = new $engineClass($config);
  35. }
  36. }