joomla_test/libraries/joomla/controller/base.php
2020-01-02 22:20:31 +07:00

138 lines
2.5 KiB
PHP

<?php
/**
* @package Joomla.Platform
* @subpackage Controller
*
* @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die;
/**
* Joomla Platform Base Controller Class
*
* @package Joomla.Platform
* @subpackage Controller
* @since 12.1
*/
abstract class JControllerBase implements JController
{
/**
* The application object.
*
* @var JApplicationBase
* @since 12.1
*/
protected $app;
/**
* The input object.
*
* @var JInput
* @since 12.1
*/
protected $input;
/**
* Instantiate the controller.
*
* @param JInput $input The input object.
* @param JApplicationBase $app The application object.
*
* @since 12.1
*/
public function __construct(JInput $input = null, JApplicationBase $app = null)
{
// Setup dependencies.
$this->app = isset($app) ? $app : $this->loadApplication();
$this->input = isset($input) ? $input : $this->loadInput();
}
/**
* Get the application object.
*
* @return JApplicationBase The application object.
*
* @since 12.1
*/
public function getApplication()
{
return $this->app;
}
/**
* Get the input object.
*
* @return JInput The input object.
*
* @since 12.1
*/
public function getInput()
{
return $this->input;
}
/**
* Serialize the controller.
*
* @return string The serialized controller.
*
* @since 12.1
*/
public function serialize()
{
return serialize($this->input);
}
/**
* Unserialize the controller.
*
* @param string $input The serialized controller.
*
* @return JController Supports chaining.
*
* @since 12.1
* @throws UnexpectedValueException if input is not the right class.
*/
public function unserialize($input)
{
// Setup dependencies.
$this->app = $this->loadApplication();
// Unserialize the input.
$this->input = unserialize($input);
if (!($this->input instanceof JInput))
{
throw new UnexpectedValueException(sprintf('%s::unserialize would not accept a `%s`.', get_class($this), gettype($this->input)));
}
return $this;
}
/**
* Load the application object.
*
* @return JApplicationBase The application object.
*
* @since 12.1
*/
protected function loadApplication()
{
return JFactory::getApplication();
}
/**
* Load the input object.
*
* @return JInput The input object.
*
* @since 12.1
*/
protected function loadInput()
{
return $this->app->input;
}
}