在方法中定义 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 的属性。
您可以在以下位置阅读一些示例:
我认为您应该阅读良好的面向对象实践。我的意思是,为什么要使变量可用 "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 基础,而不是在没有真正理解它的情况下只使用这个示例。
我见过的每个在 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 的属性。
您可以在以下位置阅读一些示例:
我认为您应该阅读良好的面向对象实践。我的意思是,为什么要使变量可用 "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 基础,而不是在没有真正理解它的情况下只使用这个示例。