Codeigniter将params传递给函数

时间:2011-05-07 22:21:37

标签: php codeigniter

我是OOP的新手,我在理解它背后的结构方面遇到了一些麻烦。 我在Codeigniter(模板)中创建了一个库,我在加载时传递了一些参数,但我想将这些参数传递给库的函数。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Template {

    public function __construct($params)
    {
        echo '<pre>'; print_r($params); echo '</pre>';
        //these are the parameters I need. I've printed them and everything seems fine
    }

    public function some_function()
    {
        //I need the above parameters here
    }

}

4 个答案:

答案 0 :(得分:5)

试试这个:

class Template {

    // Set some defaults here if you want
    public $config = array(
        'item1'  =>  'default_value_1',
        'item2'  =>  'default_value_2',
    );
    // Or don't
    // public $config = array();

    // Set a NULL default value in case we want to use defaults
    public function __construct($params = NULL)
    {
        // Loop through params and override defaults
        if ($params)
        {
            foreach ($params as $key => $value)
            {
                $this->config[$key] = $value;
            }
        }
    }

    public function some_function()
    {
        //i need the above parameters here

        // Here you go
        echo $this->config['item1'];
    }

}

这会将array('item1' => 'value1', 'item2' => 'value2');转换为您可以使用的内容,例如$this->config['item1']。您只是将数组分配给类变量$config。如果愿意,您也可以遍历变量并验证或更改它们。

如果您不想覆盖您设置的默认值,请不要在$params数组中设置该项。根据需要使用尽可能多的不同变量和值,这取决于你:)

正如Austin has wisely advised一样,请务必阅读php.net并亲自体验。文档可能会令人困惑,因为它们提供了大量边缘案例,但如果您查看Codeigniter中的库,则可以看到一些示例或如何使用类属性。这是你必须必须熟悉的面包和黄油的东西才能到达任何地方。

答案 1 :(得分:2)

让班级成员这样:

class Template {
    var $param1
    var $param2    

    public function __construct($params)
    {
        $this->param1 = $params[1]
        $this->param2 = $params[2]
        //and so on
    }
}

然后你可以在你的功能中使用它们

答案 2 :(得分:1)

您可能希望将参数存储为类中的属性,以便所有方法都可以访问它们。

请参阅有关PHP 5中的属性的文档:http://www.php.net/manual/en/language.oop5.properties.php

编辑:实际上,如果你对OOP完全不熟悉,你会发现起初可能很难绕开。当您遇到问题时,一次向SO提出问题将是一种非常低效的方法。如果您想节省一些时间,我建议您首先阅读一个基本文本,该文本解释OOP的概念,而不是特定于语言的实现细节(例如The Object-Oriented Thought Process)。然后,当您需要详细信息时,the PHP docs on the subject非常好(并且免费)。

答案 3 :(得分:0)

我建议决定天气,班级的变量是私人的还是公共的。这有助于提高可读性。私有变量应该用于内部变量,其中公共变量应该用作对象属性的东西。