我什么时候应该在PHP类中声明变量?

时间:2009-07-06 11:16:21

标签: php oop

我是OOP范例的新手,所以对这个问题可能有一个简单的解释......

您是否始终需要在类中声明公共对象范围的变量?例如:

<?php

class TestClass
{
    var $declaredVar;

    function __construct()
    {
        $this->declaredVar = "I am a declared variable.";
        $this->undeclaredVar = "I wasn't declared, but I still work.";
    }

    function display()
    {
        echo $this->declaredVar . "<br />";
        echo $this->undeclaredVar;
        echo "<br /><br />"; 
    }
}

$test = new TestClass;
$test->display();

$test->declaredVar = "The declared variable was changed.";
$test->undeclaredVar = "The undeclared variable was changed.";

$test->display();

?>

在此代码中,即使$declaredVar是唯一声明的变量,$undeclaredVar也是可访问且可用的 - 它似乎就像我已将其声明为公共一样。

如果未声明的类变量总是可以像这样访问,那么预先声明它们的重点是什么?

6 个答案:

答案 0 :(得分:40)

该变量未被初始化,它只是未声明的。

在类定义中声明变量是可读性的一种风格。 另外,您可以设置辅助功能(私人或公共)。

无论如何,明确声明变量与OOP无关,它是特定于编程语言的。在Java中,你不能这样做,因为必须明确声明变量。

答案 1 :(得分:14)

如果在类中声明成员,则可以设置其可访问性,例如

private $varname;

答案 2 :(得分:11)

您应该始终声明您的成员变量并在您的类中指定它们的可访问性。我希望在我的职能之后将这些信息放在课程的最后。

一旦有足够的信息,您应该立即定义它们。可能在构造函数中或通过setter函数。

这样做非常重要,因为它可以让处理代码的人们的生活更加轻松。他们不必猜测不同的属性来自哪里或为什么他们在那里。此外,大多数(如果不是全部)IDE都不会接受类变量,除非你已经在某处声明了它们。代码完成/提示是IDE的众多优点之一,如果不声明变量,您将无法使用该功能。

答案 3 :(得分:1)

封装的一般OOP范例说你不应该暴露你的内部状态变量,这意味着它们应该是私有的,这允许你改变你的类的实现,而不需要改变你使用它的代码。最好通过类的构造函数和getter以及setter方法初始化变量。

答案 4 :(得分:0)

一般情况下,只要有足够的信息就可以初始化变量。

如果一个类变量需要明确初始化某些信息,那么该信息应该传递给构造函数。

使用PHP的语法在定义点隐式声明变量是,恕我直言,这是一种引入错误的绝对方法 - 如果你的类需要一个变量然后声明它,并使用隐藏OOP为你提供的所有信息。

答案 5 :(得分:0)

正如Federico Culloca所说&#34;这个变量未初始化,它只是未宣布的&#34;。此外,您没有为它们定义任何访问修饰符,以便它们的行为类似于应用于它们的公共修饰符。

你可能已经知道了。 PHP是一种松散类型的语言。但是程序员应该始终遵循最佳实践(但不要在php中使用原始数据类型)。

您应该对类级别变量使用private修饰符,并为它们提供访问器和增变器方法(Getters和Setter)。