Lexinek

Nette Control Factories

Sep 10th, 2013
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.85 KB | None | 0 0
  1. <?php
  2.  
  3. // BaseControL.php:
  4. abstract class BaseControl extends Nette\Application\UI\Control {
  5.  
  6.     protected $translator;
  7.  
  8.     public function __construct(Nette\Localization\ITranslator $translator)
  9.     {
  10.         parent::__construct();
  11.  
  12.         $this->translator = $translator;
  13.     }
  14.  
  15.     protected function createTemplate($class = NULL) {
  16.         $template = parent::createTemplate($class);
  17.         $template->registerHelperLoader('Helpers::loader');
  18.         $template->setTranslator($this->translator);
  19.         // ...
  20.         return $template;
  21.     }
  22.  
  23. }
  24.  
  25.  
  26. // RandomControL.php:
  27. final class RandomControl extends BaseControl {
  28.  
  29.     private $randomDependency;
  30.  
  31.     public function __construct(Nette\Localization\ITranslator $translator, RandomClass $randomDependency) // Nutnost opakovani konstruktoru
  32.     {
  33.         parent::__construct($translator);
  34.  
  35.         $this->randomDependency = $randomDependency;
  36.     }
  37.  
  38.     public function render() { /* ... */ }
  39. }
  40.  
  41.  
  42. // RandomControLFactory.php:
  43. final class RandomControlFactory {
  44.  
  45.     private $translator;
  46.     private $randomDependency;
  47.  
  48.     public function __construct(Nette\Localization\ITranslator $translator, RandomClass $randomDependency)
  49.     {
  50.         parent::__construct($translator);
  51.  
  52.         $this->translator = $translator;
  53.         $this->randomDependency = $randomDependency;
  54.     }
  55.  
  56.     public function create() {
  57.         return new RandomControl($this->translator, $this->randomDependency);
  58.     }
  59. }
  60.  
  61.  
  62. // RandomPresenter.php:
  63. final class RandomPresenter extends BasePresenter {
  64.  
  65.     public function __construct(Nette\Localization\ITranslator $translator, RandomClass $randomDependency)
  66.     {
  67.         parent::__construct($translator);
  68.  
  69.         $this->translator = $translator;
  70.         $this->randomDependency = $randomDependency;
  71.     }
  72.  
  73.     protected function createComponentRandomControl(RandomControlFactory $randomControLFactory) { // Diky Kdyby\Autowired nemusim injectovat
  74.         return $randomControlFactory->create();
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment