View
extends Kohana_View
Acts as an object wrapper for HTML pages with embedded PHP, called "views". Variables can be assigned with the view object and referenced locally within the view.
Information
This class is a transparent base class for Kohana_View
Constants
- None
Properties
Properties
-
protected $_data
-
Default value:
array(0)
-
protected $_file
-
Default value:
NULL
-
protected static $_global_data
-
array(0)
Methods
public __construct([ string $file = NULL , array $data = NULL ] ) (defined in Kohana_View)
Sets the initial view filename and local data. Views should almost always only be created using View::factory.
$view = new View($file);
Parameters
- string $file = NULL - View filename
- array $data = NULL - Array of values
Tags
Source Code
public function __construct($file = NULL, array $data = NULL)
{
if ($file !== NULL)
{
$this->set_filename($file);
}
if ($data !== NULL)
{
// Add the values to the current data
$this->_data = $data + $this->_data;
}
}
public __get(string $key ) (defined in Kohana_View)
Magic method, searches for the given variable and returns its value. Local variables will be returned before global variables.
$value = $view->foo;
If the variable has not yet been set, an exception will be thrown.
Parameters
- string $key required - Variable name
Tags
Return Values
- mixed
Source Code
public function & __get($key)
{
if (array_key_exists($key, $this->_data))
{
return $this->_data[$key];
}
elseif (array_key_exists($key, View::$_global_data))
{
return View::$_global_data[$key];
}
else
{
throw new Kohana_Exception('View variable is not set: :var',
[':var' => $key]);
}
}
public __isset(string $key ) (defined in Kohana_View)
Magic method, determines if a variable is set.
isset($view->foo);
NULL
variables are not considered to be set by isset.
Parameters
- string $key required - Variable name
Return Values
- boolean
Source Code
public function __isset($key)
{
return (isset($this->_data[$key]) OR isset(View::$_global_data[$key]));
}
public __set(string $key , mixed $value ) (defined in Kohana_View)
Magic method, calls View::set with the same parameters.
$view->foo = 'something';
Parameters
- string $key required - Variable name
- mixed $value required - Value
Return Values
- void
Source Code
public function __set($key, $value)
{
$this->set($key, $value);
}
public __toString() (defined in Kohana_View)
Magic method, returns the output of View::render.
Tags
Return Values
- string
Source Code
public function __toString()
{
try
{
return $this->render();
}
catch (Exception $e)
{
/**
* Display the exception message.
*
* We use this method here because it's impossible to throw an
* exception from __toString().
*/
$error_response = Kohana_Exception::_handler($e);
return $error_response->body();
}
}
public __unset(string $key ) (defined in Kohana_View)
Magic method, unsets a given variable.
unset($view->foo);
Parameters
- string $key required - Variable name
Return Values
- void
Source Code
public function __unset($key)
{
unset($this->_data[$key], View::$_global_data[$key]);
}
public bind(string $key , mixed & $value ) (defined in Kohana_View)
Assigns a value by reference. The benefit of binding is that values can be altered without re-setting them. It is also possible to bind variables before they have values. Assigned values will be available as a variable within the view file:
// This reference can be accessed as $ref within the view
$view->bind('ref', $bar);
Parameters
- string $key required - Variable name
- byref mixed $value required - Referenced variable
Return Values
- $this
Source Code
public function bind($key, & $value)
{
$this->_data[$key] =& $value;
return $this;
}
public static bind_global(string $key , mixed & $value ) (defined in Kohana_View)
Assigns a global variable by reference, similar to View::bind, except that the variable will be accessible to all views.
View::bind_global($key, $value);
Parameters
- string $key required - Variable name
- byref mixed $value required - Referenced variable
Return Values
- void
Source Code
public static function bind_global($key, & $value)
{
View::$_global_data[$key] =& $value;
}
public static factory([ string $file = NULL , array $data = NULL ] ) (defined in Kohana_View)
Returns a new View object. If you do not define the "file" parameter, you must call View::set_filename.
$view = View::factory($file);
Parameters
- string $file = NULL - View filename
- array $data = NULL - Array of values
Return Values
- View
Source Code
public static function factory($file = NULL, array $data = NULL)
{
return new View($file, $data);
}
public render([ string $file = NULL ] ) (defined in Kohana_View)
Renders the view object to a string. Global and local data are merged and extracted to create local variables within the view file.
$output = $view->render();
Global variables with the same key name as local variables will be overwritten by the local variable.
Parameters
- string $file = NULL - View filename
Tags
Return Values
- string
Source Code
public function render($file = NULL)
{
if ($file !== NULL)
{
$this->set_filename($file);
}
if (empty($this->_file))
{
throw new View_Exception('You must set the file to use within your view before rendering');
}
// Combine local and global data and capture the output
return View::capture($this->_file, $this->_data);
}
public set(string|array|Traversable $key [, mixed $value = NULL ] ) (defined in Kohana_View)
Assigns a variable by name. Assigned values will be available as a variable within the view file:
// This value can be accessed as $foo within the view
$view->set('foo', 'my value');
You can also use an array or Traversable object to set several values at once:
// Create the values $food and $beverage in the view
$view->set(array('food' => 'bread', 'beverage' => 'water'));
Note: When setting with using Traversable object we're not attaching the whole object to the view, i.e. the object's standard properties will not be available in the view context.
Parameters
- string|array|Traversable $key required - Variable name or an array of variables
- mixed $value = NULL - Value
Return Values
- $this
Source Code
public function set($key, $value = NULL)
{
if (is_array($key) OR $key instanceof Traversable)
{
foreach ($key as $name => $value)
{
$this->_data[$name] = $value;
}
}
else
{
$this->_data[$key] = $value;
}
return $this;
}
public set_filename(string $file ) (defined in Kohana_View)
Sets the view filename.
$view->set_filename($file);
Parameters
- string $file required - View filename
Tags
Return Values
- View
Source Code
public function set_filename($file)
{
if (($path = Kohana::find_file('views', $file)) === FALSE)
{
throw new View_Exception('The requested view :file could not be found', [
':file' => $file,
]);
}
// Store the file path locally
$this->_file = $path;
return $this;
}
public static set_global(string|array|Traversable $key [, mixed $value = NULL ] ) (defined in Kohana_View)
Sets a global variable, similar to View::set, except that the variable will be accessible to all views.
View::set_global($name, $value);
You can also use an array or Traversable object to set several values at once:
// Create the values $food and $beverage in the view
View::set_global(array('food' => 'bread', 'beverage' => 'water'));
Note: When setting with using Traversable object we're not attaching the whole object to the view, i.e. the object's standard properties will not be available in the view context.
Parameters
- string|array|Traversable $key required - Variable name or an array of variables
- mixed $value = NULL - Value
Return Values
- void
Source Code
public static function set_global($key, $value = NULL)
{
if (is_array($key) OR $key instanceof Traversable)
{
foreach ($key as $name => $value)
{
View::$_global_data[$name] = $value;
}
}
else
{
View::$_global_data[$key] = $value;
}
}
protected static capture(string $kohana_view_filename , array $kohana_view_data ) (defined in Kohana_View)
Captures the output that is generated when a view is included. The view data will be extracted to make local variables. This method is static to prevent object scope resolution.
$output = View::capture($file, $data);
Parameters
- string $kohana_view_filename required - Filename
- array $kohana_view_data required - Variables
Tags
Return Values
- string
Source Code
protected static function capture($kohana_view_filename, array $kohana_view_data)
{
// Import the view variables to local namespace
extract($kohana_view_data, EXTR_SKIP);
if (View::$_global_data)
{
// Import the global view variables to local namespace
extract(View::$_global_data, EXTR_SKIP | EXTR_REFS);
}
// Capture the view output
ob_start();
try
{
// Load the view within the current scope
include $kohana_view_filename;
}
catch (Exception $e)
{
// Delete the output buffer
ob_end_clean();
// Re-throw the exception
throw $e;
}
// Get the captured output and close the buffer
return ob_get_clean();
}