在方法中定义类变量?

时间:2015-04-04 03:47:07

标签: php class oop variables methods

我在组中定义变量的每个例子都在任何方法之外,例如:

class Testclass
{
  public $testvar = "default value";

  function dosomething()
  {
    echo $this->testvar;
  }
}

$Testclass = new Testclass();
$Testclass->testvar = "another value";    
$Testclass->dosomething();

如何在方法中定义变量,并使该定义可用于该类中的任何其他方法?

请注意,我只想在一个函数中定义变量,而不是每个函数都有不同的定义。

2 个答案:

答案 0 :(得分:2)

我认为你应该阅读好的面向对象的做法。我的意思是,你为什么要在一个方法中使变量可用?

在方法中创建的变量是该特定方法的本地变量,因此,范围仅限于此。

如果您尝试在方法之间访问变量,则应该使用对象可用的实例成员/变量。或者你可以通过方法之间的ref传递变量。当然,如果它的值永远不会改变,那么它应该是类(类成员)上的静态变量。

我建议阅读关于tutsplus的OO教程。 Tutsplus通常质量很好。 http://code.tutsplus.com/tutorials/object-oriented-php-for-beginners--net-12762

或者,您可以在Udacity上进行OO python课程(计算机科学入门) - 它的质量也非常高。在尝试理解核心OO概念时,不要担心它的Python,特定语言和语法无关紧要。 https://www.udacity.com/course/cs101

此外,这是一个常见主题,因此请进行搜索,即Passing Variables between methods?

我希望有帮助

修改以解决您的评论。像这样的东西:

class Testclass
{
  private $csvResult = []; // instance member array to store csv results

  function dosomething()
  {
    $this->$csvResult = fgetcsv($blah);
  }

  function processResult()
  {
    foreach ($this->$csvResult as $item) {
      var_dump($item)
    }
  }
}

但是,正如Adrian Cid Almaguer所提到的那样,你最好为自己建立一个坚实的OO基础,而不是仅仅使用这个例子而不是真正理解它。

答案 1 :(得分:1)

变量类的真实名称是"属性"。您也可以使用其他术语来查看它们,例如"属性"或"字段"。在OOP(面向对象的编程)中你不能在方法中定义一个属性(类函数的真实名称是方法,而不是函数),因为这是类的属性,而不是属性 一种方法。

属性定义类的属性,方法定义类的行为。例如,如果您有一个名为Person的类,该人具有Name和Age,它们是您的属性,它们是描述您的类的属性,它们不能位于描述您的类行为的方法中,因为必须从需要它的任何方法访问您的类的属性以显示其行为。

您可以阅读以下的一些示例:

  

http://www.killerphp.com/tutorials/object-oriented-php/