在方法中定义类变量


defining class variables in method?

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

class Testclass
{
  public $testvar = "default value";
  function dosomething()
  {
    echo $this->testvar;
  }
}
$Testclass = new Testclass();
$Testclass->testvar = "another value";    
$Testclass->dosomething();

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

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

我认为您应该了解良好的面向对象实践。我的意思是,为什么你想让一个变量在"方法内部"可用?

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

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

我建议你们读一读关于芭蕾舞团的OO教程。Tutspus的质量一般都很好。http://code.tutsplus.com/tutorials/object-oriented-php-for-beginners--net-12762

或者,你可以在Udacity上学习OO python课程(计算机科学导论),它的质量也很高。在试图理解OO核心概念时,不要担心它的Python、特定语言和语法是无关紧要的。https://www.udacity.com/course/cs101

此外,这是一个常见的主题,所以要四处搜索,即在方法之间传递变量?

我希望这能帮助

编辑:处理您的评论。像这样的东西:

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基础,而不是仅仅使用这个例子而不真正理解它

变量类的真实名称是"properties"。您还可以看到使用其他术语(如"属性"或"字段")来引用它们。在OOP(面向对象编程)中,不能在方法内部定义属性(类函数的真正名称是方法,而不是函数),因为这是类的属性,而不是属性方法。

属性定义类的属性,方法定义类的行为。例如,如果你有一个名为Person的类,这个人有Name和Age,它们是你的属性,是描述你的类的属性,它们不能在描述你类行为的方法中,因为你类的属性必须从任何需要它来显示他的行为的方法访问。

你可以在中阅读一些例子

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