在方法中定义 class 个变量?

defining class variables in method?

我见过的每个在 class 中定义变量的示例都是在任何方法之外进行的,例如:

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

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

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

您将如何在方法内定义变量,并使该定义可用于该 class 内的任何其他方法?

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

变量class的真实名称是"properties"。您可能还会看到使用其他术语(例如 "attributes" 或 "fields")来提及它们。在OOP(Object Oriented Programming)中你不能在一个方法里面定义一个属性(class函数的真正名字是方法,而不是函数),因为这是一个[=20]的属性=], 不是属性 一种方法。

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

您可以在以下位置阅读一些示例:

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

我认为您应该阅读良好的面向对象实践。我的意思是,为什么要使变量可用 "inside a method"?

在方法中创建的变量对于该特定方法是局部的,因此,范围仅限于它。

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

我建议阅读 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 基础,而不是在没有真正理解它的情况下只使用这个示例。