1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111:
<?php
/**
* MvcCore
*
* This source file is subject to the BSD 3 License
* For the full copyright and license information, please view
* the LICENSE.md file that are distributed with this source code.
*
* @copyright Copyright (c) 2016 Tom Flidr (https://github.com/mvccore)
* @license https://mvccore.github.io/docs/mvccore/5.0.0/LICENCE.md
*/
namespace MvcCore\Ext\Views\Helpers;
/**
* Responsibility - better view helper setup.
* - Every time, when there is necessary to create view helper, there is called
* `\MvcCore\Ext\Views\Helpers\IHelper::GetInstance();` method in `\MvcCore\View`.
* All view helpers are stored inside `\MvcCore\View` and they are created only once.
* But if you need to configure view helper anytime before, you can use this method
* for singleton instancing to configure anything statically anytime before.
* - Every time, when currently rendered view object is changed (action view, layout view,
* sub-controller view...), there is called `\MvcCore\Ext\Views\Helpers\IHelper::SetView($view);`
* method giving currently rendered view object. From this object, you can get properties
* for better view helper processing like application object, controller, request or response object.
* @method \MvcCore\Ext\Views\Helpers\AbstractHelper GetInstance()
*/
abstract class AbstractHelper implements \MvcCore\Ext\Views\Helpers\IHelper {
/**
* MvcCore Extension - View Helper - Line Breaks - version:
* Comparison by PHP function version_compare();
* @see http://php.net/manual/en/function.version-compare.php
*/
const VERSION = '5.0.0';
/**
* Instance store used by method `GetInstance()`.
* @var \MvcCore\Ext\Views\Helpers\AbstractHelper|NULL
*/
protected static $instance = NULL;
/**
* Currently rendered view instance reference.
* Every time, when there is rendered different view script,
* this view property is changed by method `\MvcCore\Ext\Views\Helpers\AbstractHelper::SetView();`.
* @var \MvcCore\View
*/
protected $view = NULL;
/**
* Currently used controller instance reference for currently rendered view script.
* Every time, when there is rendered different view script,
* this controller and also view property is changed by method `\MvcCore\Ext\Views\Helpers\AbstractHelper::SetView();`.
* @var \MvcCore\Controller
*/
protected $controller = NULL;
/**
* Current request object reference from used controller.
* @var \MvcCore\Request
*/
protected $request = NULL;
/**
* Current response object reference from used controller.
* @var \MvcCore\Response
*/
protected $response = NULL;
/**
* Create view helper instance as singleton.
* To configure view helper instance, create it by this method
* in your base controller in `PreDispatch();` method.
* After this singleton instance is created, then you can configure
* anything you want.
*
* Example:
* // somewhere in base controller:
* `\MvcCore\Ext\Views\Helpers\LineBreaks::GetInstance()
* ->SetView($this->view)
* ->SetAnythingElseBeforeRendering(...);`
* @static
* @return \MvcCore\Ext\Views\Helpers\AbstractHelper
*/
public static function GetInstance () {
if (!static::$instance) static::$instance = new static();
return static::$instance;
}
/**
* Set currently rendered view instance every time this helper
* is called and the rendered view instance is changed.
* This method sets these protected object references:
* - `AbstractHelper::$view` as `\MvcCore\View|\MvcCore\IView`
* - `AbstractHelper::$controller` as `\MvcCore\Controller|\MvcCore\IController`
* - `AbstractHelper::$request` as `\MvcCore\Request|\MvcCore\IRequest`
* - `AbstractHelper::$response` as `\MvcCore\Response|\MvcCore\IResponse`
* @param \MvcCore\View $view
* @return \MvcCore\Ext\Views\Helpers\AbstractHelper
*/
public function SetView (\MvcCore\IView $view) {
$this->view = $view;
$this->controller = $view->GetController();
$this->request = $this->controller->GetRequest();
$this->response = $this->controller->GetResponse();
return $this;
}
}