2012-08-13 37 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