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

And*_*rew 46 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();

?>
Run Code Online (Sandbox Code Playgroud)

在这段代码中,即使$declaredVar是唯一声明的变量,$undeclaredVar也是可访问和可用的 - 它似乎就好像我已将其声明为public.

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

Fed*_*oca 42

这个变量不是未初始化的,它只是未声明的.

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

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

  • 所以这只是因为PHP非常宽容,未声明的变量有效,对吧? (3认同)

Dav*_*her 15

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

private $varname;
Run Code Online (Sandbox Code Playgroud)

  • 注意:自PHP 5以来只支持这种情况(以防你被困在4.x树上),但我同意明确设置变量和方法可见性是很好的做法 - 只是因为PHP解释器没有'要求它并不意味着你不应该使用它. (5认同)

Mic*_*ssa 11

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

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

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