Modules

Kohana_View

This class is a transparent base class for View and should not be accessed directly.

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.

package
Kohana
category
Base
author
Kohana Team
copyright
© 2008-2012 Kohana Team
license
https://kohana.top/license

Class declared in SYSPATH/classes/Kohana/View.php on line 14.

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(['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(['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();
}