遇到问题时,我正在用PHP创建一个类来验证联系表单。 我最终将其跟踪到类中的数组,并编写了一个测试脚本来尝试解决该问题:

<?php

class Object {
    public $testArray = array(5);

    function __construct() {
        $testArray[] = 7;
    }

    function addNumber() {
        $testArray[] = mt_rand(10,20);
    }

    function returnArray() {
        return var_dump($testArray);
    }
}

$object = new Object;
$object->addNumber();
echo($object->returnArray());
var_dump($object->testArray);

这将输出NULL array(1) { [0]=> int(5) }

我对为什么这不起作用感到困惑。 最终,我希望该数组为私有数组,但找不到与C#中getset类似的方法。 有任何想法吗?

===============>>#1 票数:2 已采纳

试试看:

class Object {
    public $testArray = array(5);

    function __construct() {
        $this->testArray[] = 7;
    }

    function addNumber() {
        $this->testArray[] = mt_rand(10,20);
    }

    function returnArray() {
        return var_dump($this->testArray);
    }
}

您必须使用$ this引用类变量-否则,它将尝试在您所使用的函数中设置局部变量。

您可以使用PHP神奇的__set()和__get()方法来实现与您提到的C#类似的功能: PHP Overloading

===============>>#2 票数:1

$testArray[] = mt_rand(10,20);

应该:

$this->testArray[] = mt_rand(10,20);

$testArray只是另一个局部变量(局部于函数,无类)。 如果没有值,则为null 这与您看到的输出一致。 $object->testArray永远不会被修改。

===============>>#3 票数:1

您必须使用$ this访问类变量。 所以$ testArray应该是$ this-> testArray。

  ask by microbug translate from so

未解决问题?本站智能推荐:

4回复

在对象中使用对象?

是否可以在对象内使用对象? 例如,我有一个MySQL类,该类具有每个与MySQL相关的方法(连接,查询,获取行...),并且正在创建一个名为User的新对象,该对象将具有诸如login,logout,register等方法。 ..是否可以包含我的MySQL类,定义一个对象,然后在新对象中运行查
2回复

在对象中使用PDO

至今 我知道该类实际上不是在扩展pdo对象,我不知道为什么要这样称呼它。 我的问题 我需要添加此类,以便可以进行一些查询,尤其是使用准备好的语句。 有人可以给我反馈添加什么来完成此任务。 我目前正在从另一个这样的班级内部调用这个班级, 我的老办法,没有PDO
3回复

不在对象上下文中使用$ this php

我刚刚开始用php学习OOPS。 我写了一个简单的程序来实现继承。 当不在对象上下文中时,我会遇到致命错误$ this。 谁能解释这个错误,这是什么意思? 这是我的代码:
2回复

在对象属性中使用函数变量

所以我得到了这段代码: 它运作良好。 PHP可以识别存储在object属性中的函数,但是有一种方法可以简化如下: 我想使用对象属性代替将其存储在另一个变量中,以将其用作函数。 在这种情况下,PHP认为这是一个对象方法而不是变量。 可以用其他方式做到吗?
1回复

如何在PHP中使用对象创建数组

我想要一个包含对象的数组。 例如。 这是我正在尝试的非常简化的版本。 Car类包含有关Car一些信息。 当我在Car类中使用Interface C时。 我无法将对象添加到数组。 为什么会这样?
1回复

在对象自己的类中使用property vs getter / setter

假设我有一个A类,另一个B类作为它的属性。 当类A需要对类B进行修改时,最好使用getter方法进行修改或直接访问该属性以进行访问? 举个例子。 我正在考虑使用getter方法,以便如果必须对类引擎方法进行存根,则可以模拟getEngine()返回的内容并删除依赖项。
4回复

如何在PHP中使用OOP更改多维数组中对象的值

我正在建立一个国际象棋游戏,在棋盘上随机放置7个皇后而不互相撞。 评估板由7行7列构成。 到目前为止,我已执行以下步骤 分为5类:游戏,棋盘,方块,棋子和女王。 游戏的创建和实例。 使用方法createBoard创建了一个新的Board对象。 创建了一个sh
1回复

严重错误:不在对象上下文中使用$ this,但仍然可以使用[重复]

这个问题已经在这里有了答案 : 参考-此错误在PHP中意味着什么? (34个答案) 4小时前关闭。 因此,对此有很多类似的问题
2回复

PHP:没有办法在对象构造函数中使用全局变量吗?

我有一个旨在供用户编辑的php脚本,并在开始时设置了一些选项,包括允许的图像文件扩展名。 稍后,我想在对象构造函数中使用它来设置文件是否为图像。 这是行不通的,因为我不能从类(?)内部调用$extensions 。 有没有一种方法可以在此类的每个对象中不包含$extensions
1回复

在对象数组中取消设置对象

我有一个问题,从带有对象的数组中删除项目,相同的代码在其他应用程序中运行。 循环后,数组$categories应为空。 如果用户将第二个参数传递为TRUE,则下面的代码将删除所有子类别,然后删除父类别,如果父级没有子级,则仅删除它。