2012-08-13 36 views
1

新手問題,我有我的類方法內的變量,我必須使他們的類變量,我可以訪問他們使用$這?如果不是,請解釋我什麼時候使用或創建類變量?什麼時候和如何用PHP創建類變量?

private function is_valid_cookie() 
{ 
    $securedtoken = $this->input->cookie('securedtoken'); 
    // Checks if the cookie is set 
    if (!empty($securedtoken)) { 
     // Checks if the cookie is in the database 
     $s = $this->db->escape($securedtoken); 
     $query = $this->db->query("SELECT cookie_variable FROM jb_login_cookies WHERE cookie_variable=$s"); 
     if ($query->num_rows() != 0) { 
      // Now let us decrypt the cookie variables 
      $decoded = unserialize($this->encrypt->decode($securedtoken)); 
      $this->login($decoded['username'], $decoded['password']); 
      return true; 
     } else { 
      return false; 
     } 
    } else { 
     return false; 
    } 
} 

因爲你們可以看到,我有變量$ securedtoken和$解碼=陣列(),我不能決定,如果我必須讓他們的類變量,只是用$這個

+1

你通常會使他們的類變量,當他們要方法之間共享,或暴露於外界 – 2012-08-13 21:42:23

回答

1

你做訪問它們,是的。你可以聲明類變量是這樣的:

class Dog 
{ 
    protected $name = 'Spot'; 

    public function getName() 
    { 
     return $this->name; 
    } 
} 

你可以閱讀更多有關documentation屬性(成員變量)。

+1

+1的顯示代碼,並鏈接到手動 – tubaguy50035 2012-08-13 21:54:06

1

我實際嘗試最小化使用的類級變量來的情況下,他們將要共同在多個方法,或者它們將要由代碼類的外部引用(直接地或者經由getter/setter方法)。如果該方法僅在本地範圍內需要該變量,請不要污染該類。

1

當您嘗試在類中的不同函數中共享這些變量時,您會想要創建類變量。然後,您需要針對這些屬性使用不同的訪問修飾符(公共,私有,受保護),具體取決於外部代碼是否可以查看它們,子類可以查看它們,或根本沒有。

+0

有任何類型的建築類,方法和屬性的方法或方法? – 2012-08-13 21:53:08

1

您不必使它們成爲實例變量。你也可以使它們成爲靜態變量,或者是常量變量!您使用類變量來描述類的屬性。即一個班級有什麼。

它也很重要,以讓您的術語正確。您正在詢問有關製作變量和實例變量的信息。類變量(http://en.wikipedia.org/wiki/Class_variable)指的是一個靜態變量

對於您的具體示例,如果您的兩個變量僅用於該函數中,則不應將它們變爲實例變量。沒有理由在課堂上分享他們 另一方面,如果您需要在其他方法或其他地方再次使用它們,則可以使用。你應該。

決定你想要什麼類型的變量以及設計決策是什麼樣的訪問。

好的地方開始是面向對象的PHP概述。 http://php.net/manual/en/language.oop5.php

和基本的初級教程 http://www.killerphp.com/tutorials/object-oriented-php/

+0

建築課堂及其方法和屬性有哪些方法或方法? – 2012-08-13 21:51:27

+0

@JohndaveDecano我看到的最大的事情就是你依靠'$ this-> input-> cookie'這使得函數依賴於一個cookie集合,爲了使它獨立多一點,你可以採取cookie值作爲函數的參數。 – dm03514 2012-08-13 21:55:44