当前位置:  开发笔记 > 编程语言 > 正文

PHP未定义的类索引

如何解决《PHP未定义的类索引》经验,为你挑选了1个好方法。

我知道之前已经问过这个问题,我已经查看了多个线程,了解为什么会发生这种情况,但是无法理解我的工作方式不同,因为其他变量以相同的方式定义并以相同的方式工作.

class item{
    var $name = "test";
    var $id = 3;

    function setId($newID){
        global $id;
        $id = $newID;
    }

    function getId(){
        return $GLOBALS['id'];
    }

    function setName($newName){
        global $name;
        $name = $newName;
    }

    function getName(){
        return $GLOBALS['name'];
    }
}

这是该类的一个片段,因为它实际上很长但是重复了getName和setName以获得5/6个项目.

$item[0]->getName();

会返回"测试"

$item[0]->getId();

返回"未定义索引:第59行链接到文件的 id ",这是getId()函数.

除了getId()之外的每个函数都有效,我不知道为什么

编辑 - 这个问题已经回答我等着能够接受答案.$这适用于变量返回(即使我仍然不确定为什么即使其他5或6个人也会这样)



1> ʰᵈˑ..:

你的理解变量范围一内类是错误的.通常,Setter和getter用于修改和获取privateprotected属性.分配属性会var自动为它们提供public范围.

在课堂上,你不需要使用global- 事实上,global无论如何使用是不好的做法.您可以使用引用类属性$this.

例如;

class item {
    private $name = "test";
    private $id = 3;

    function setId($newID){
        $this->id = $newID;
    }

    function getId(){
        return $this->id;
    }

    function setName($newName){
        $this->name = $newName;
    }

    function getName(){
        return $this->name;
    }
}

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有