【问题标题】:Declaring class variables question声明类变量问题
【发布时间】:2011-06-11 19:37:53
【问题描述】:

这些 var 声明实际上在 PHP 类中做了什么:

class VbForumsPageMain extends BxDolPageView {
    var $_oMain;
    var $_oTemplate;
    var $_oConfig;
    var $_oDb;

    function VbForumsPageMain(&$oMain) {
        $this->_oMain = &$oMain;
        $this->_oTemplate = $oMain->_oTemplate;
        $this->_oConfig = $oMain->_oConfig;
        $this->_oDb = $oMain->_oDb;
        parent::BxDolPageView('vb_forums_main');
    }
}

它们是必需的吗?它们是否对变量增加了任何额外的用途?我不确定他们到底是不是在课堂上两次。

【问题讨论】:

  • “两次”是什么意思?
  • 我猜你的第一门编程语言是 PHP?
  • 至少是他的第一次 OOP 曝光。

标签: php


【解决方案1】:

第一次使用是定义它们,第二次是初始化它们。 预先定义它们是一个很好的做法set the appropriate visibility 是更好的做法。

阅读PHP documentation 了解更多信息 - 您现在所学的知识将使您为未来做好准备。

【讨论】:

  • +1,反应良好。还想添加 another SO question 以供 OP 参考。
  • 那么使用 var 是一种不再需要的旧做法了吗?
  • @whatshakin 有效。在现代代码中,您只需使用适当的公共/受保护/私有可见性。 (也就是说,如果您需要 PHP 4 兼容性,请坚持使用普通的旧“var”。)
【解决方案2】:

这里已经回答了,希望对您有所帮助 - What does PHP keyword 'var' do?

它基本上声明了公共属性或类,但您应该改用privatepublicprotected

【讨论】:

    【解决方案3】:

    是的,它们在定义类的扩展时是必需的。 VbForumsPageMain 类具有与由那些 vars 扩展的 BxDolPageView 相同的属性(变量)。 下面的函数设置类的值和结构。

    【讨论】:

      【解决方案4】:

      只是补充一下其他答案:课程开头的这些定义对于 IDE 中的自动竞争非常重要。如果您一开始没有定义属性,IDE 可能会给您“未定义的属性”错误。此外,它还让您快速了解类中可用的属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多