我刚开始使用OOP / CodeIgniter。我想将表单输入分配给变量。我想知道我应该使用哪一个$this -> var
或$var
以及它们之间的区别?感谢。
例如
$agree = $this -> input -> post( 'agree' );
OR
$this -> agree = $this -> input -> post( 'agree' );
两者都可以正常工作:
if ($agree) { }
OR
if ($this -> agree){ }
由于
答案 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
有效,但我没有测试过。
广告@米