Welcome_Controller::__call()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 1 Features 0
Metric Value
cc 1
eloc 3
c 2
b 1
f 0
nc 1
nop 2
dl 0
loc 10
rs 9.4285
1
<?php defined('SYSPATH') or die('No direct access allowed.');
2
/**
3
 * Default Kohana controller. This controller should NOT be used in production.
4
 * It is for demonstration purposes only!
5
 *
6
 * @package    Core
7
 * @author     Kohana Team
8
 * @copyright  (c) 2007-2008 Kohana Team
9
 * @license    http://kohanaphp.com/license.html
10
 */
11
class Welcome_Controller extends Template_Controller
12
{
13
14
    // Disable this controller when Kohana is set to production mode.
15
    // See http://docs.kohanaphp.com/installation/deployment for more details.
16
    const ALLOW_PRODUCTION = false;
17
18
    // Set the name of the template to use
19
    public $template = 'kohana/template';
20
21
    public function index()
22
    {
23
        // In Kohana, all views are loaded and treated as objects.
24
        $this->template->content = new View('welcome_content');
25
26
        // You can assign anything variable to a view by using standard OOP
27
        // methods. In my welcome view, the $title variable will be assigned
28
        // the value I give it here.
29
        $this->template->title = 'Welcome to Kohana!';
30
31
        // An array of links to display. Assiging variables to views is completely
32
        // asyncronous. Variables can be set in any order, and can be any type
33
        // of data, including objects.
34
        $this->template->content->links = array(
0 ignored issues
show
Documentation introduced by
The property links does not exist on object<View>. Since you implemented __set, maybe consider adding a @property annotation.

Since your code implements the magic setter _set, this function will be called for any write access on an undefined variable. You can add the @property annotation to your class or interface to document the existence of this variable.

<?php

/**
 * @property int $x
 * @property int $y
 * @property string $text
 */
class MyLabel
{
    private $properties;

    private $allowedProperties = array('x', 'y', 'text');

    public function __get($name)
    {
        if (isset($properties[$name]) && in_array($name, $this->allowedProperties)) {
            return $properties[$name];
        } else {
            return null;
        }
    }

    public function __set($name, $value)
    {
        if (in_array($name, $this->allowedProperties)) {
            $properties[$name] = $value;
        } else {
            throw new \LogicException("Property $name is not defined.");
        }
    }

}

Since the property has write access only, you can use the @property-write annotation instead.

Of course, you may also just have mistyped another name, in which case you should fix the error.

See also the PhpDoc documentation for @property.

Loading history...
35
            'Home Page'     => 'http://kohanaphp.com/',
36
            'Documentation' => 'http://docs.kohanaphp.com/',
37
            'Forum'         => 'http://forum.kohanaphp.com/',
38
            'License'       => 'Kohana License.html',
39
            'Donate'        => 'http://kohanaphp.com/donate',
40
        );
41
    }
42
43
    public function __call($method, $arguments)
44
    {
45
        // Disable auto-rendering
46
        $this->auto_render = false;
47
48
        // By defining a __call method, all pages routed to this controller
49
        // that result in 404 errors will be handled by this method, instead of
50
        // being displayed as "Page Not Found" errors.
51
        echo 'This text is generated by __call. If you expected the index page, you need to use: welcome/index/'.substr(Router::$current_uri, 8);
52
    }
53
} // End Welcome Controller
54