$ this-> var或$ var

时间:2011-06-17 09:37:46

标签: php codeigniter variables

我刚开始使用OOP / CodeIgniter。我想将表单输入分配给变量。我想知道我应该使用哪一个$this -> var$var以及它们之间的区别?感谢。

例如

$agree = $this -> input -> post( 'agree' );

OR

$this -> agree = $this -> input -> post( 'agree' );

两者都可以正常工作:

if ($agree) { }

OR

if ($this -> agree){ }

由于

7 个答案:

答案 0 :(得分:2)

当涉及额外的局部变量时,这确实是一个优先事项。作为一般指导,如果变量仅与方法相关,我将使用$var,如果其他方法也使用此变量,则使用$this->var

如果您只是收集输入并在该方法中处理它,我只会使用局部变量。类成员通常用于与类/对象相关的事物,例如,表示车辆的类可能具有$number_of_wheels变量。

答案 1 :(得分:2)

我假设您正在谈论在控制器/动作对中使用什么?

$this->var实际上是指名为var的控制器类的属性。

$var表示它是一个本地(函数)范围的变量

如果您不想特别想要访问类属性,请不要使用$this。只需使用$var,只能在函数范围内访问它。

如果您实际上是指类属性,并且希望此类属性可以被类中的所有方法访问,请确保在类定义中将其声明为最重要。

答案 2 :(得分:2)

这是范围问题

<?php
    class Example extends CI_Controller
    {
        private $agree1;

        public function __construct()
        {
            parent::__construct();
        }

        public function index()
        {
            $agree2 = $this->input->post( 'agree' );
            $this->agree1 = $this->input->post( 'agree' );

            // within this context both are accessable
            // these will print the same
            var_dump($agree2);
            var_dump($this->agree1);

            // call the helper function
            $this->helper();
        }

        private function helper()
        {
            // within this context $agree2 is not defined
            // these will NOT print the same. Only the 2nd will print the content of the post
            var_dump($agree2);
            var_dump($this->agree1);
        }
    }
?>

答案 3 :(得分:1)

如果您使用$this->var,那么您指的是类变量。如果您只将其分配到$var,那么您指的是本地变量。如果您不需要其他方法可用的表单值,我认为您需要使用以下内容:

$agree = $this->input->post('agree');

答案 4 :(得分:1)

这取决于您是要设置局部变量还是对象变量。

您应该在类的开头声明您的对象变量(例如private $var) - 可以从整个班级的不同方法访问它们。

只能在当前方法的范围内访问局部变量。

答案 5 :(得分:0)

$this->agree)如果您要在类的其他函数中使用它,$agree如果在当前范围内使用它,则意味着在函数内部使其仅为局部变量。

答案 6 :(得分:-2)

我认为只有$this->agree有效,但我没有测试过。

广告@米