2011-06-17 104 views
1

我剛開始使用OOP/CodeIgniter。我想要將表單輸入分配給變量。我想知道哪一個我應該使用$this -> var$var以及它們如何相互區別?謝謝。

例如

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

OR

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

雙方將做工精細,如:

if ($agree) { } 

OR

if ($this -> agree){ } 

謝謝

回答

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); 
     } 
    } 
?> 
-2

我認爲只有$this->agree的作品,但是,我沒有測試過這個。

廣告@米

2

這真是喜好的問題,當涉及到額外的局部變量。作爲一般指導,如果變量只與方法相關,則使用$var;如果其他方法也使用該變量,則使用$this->var

如果您只是收集輸入並在該方法中處理它,我只會使用局部變量。類成員通常用於與類/對象相關的事物,例如代表車輛的類可能具有$number_of_wheels變量。

1

如果您使用$this->var那麼您所指的是類變量。如果您將其分配給$var,那麼您所指的是本地變量。我居興你需要使用以下的,如果你不需要表單值可用其他方法:

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

2

我假設你在談論什麼內部使用一個控制器/動作對?

$this->var實際上是指您的控制器類名爲var的屬性。

$var意味着它是一個本地(功能)範圍的變量

如果不特別希望訪問類屬性,則不要使用$this。只需使用$var並且只能在該功能的範圍內訪問它。

如果您實際上是指類屬性,並且希望此類屬性可以被類中的所有方法訪問,請確保將它聲明在類定義中。

1

這取決於您是要設置局部變量還是對象變量。

你應該在類的開頭聲明你的對象變量(例如private $var) - 它們可以通過類中的不同方法訪問。

局部變量只能在當前方法的範圍內訪問。

0

$this->agree)如果您打算在類的其他功能中使用它,$agree(如果在當前範圍內使用它),意思是在函數內部使其成爲局部變量。