在类中访问变量

时间:2014-09-06 09:57:38

标签: php class

我是OO php的新手,我正在尝试访问$ my_array字符串(或者它是属性):

class Something extends MAIN
{
    private static $instance;



public static function newInstance()
    {
        if( !self::$instance instanceof self ) {
            self::$instance = new self;
        }
        return self::$instance;
    }

    function __construct()
    {
        parent::__construct();

        $my_array = array('test1','test2');
    }
}

试过这个:

$int = Something::newInstance();
echo $int->my_array;
echo Something::my_array

但没有任何作用。问题是什么?编辑:我必须提到我不应该在Something类中改变任何东西。或者如果不在Soemthing类中进行更改,就不可能做到这一点?

3 个答案:

答案 0 :(得分:0)

$my_array现在是方法中的局部变量(=类中的函数),因此无法在该方法之外读取。像这样改变它使它成为对象的“属性”*。

class Something extends MAIN
{
    private static $instance;
    public $my_array;

    function newInstance() { ... } // Left out for brevity

    function __construct()
    {
        parent::__construct();

        // Use $this to reference the instance, in the way that self references the class.
        $this->my_array = array('test1','test2');
    }
}

然后使用

$int = Something::newInstance();
echo $int->my_array;

*)PHP将其称为属性,但在大多数语言中,属性是引用getter和setter方法的定义,或者直接引用类中的(通常是私有的)变量。在PHP中,该变量本身称为属性。

答案 1 :(得分:0)

$ my_array是构造函数的本地。您需要以具有类范围的方式声明它。你必须这样做

class Something extends MAIN
{
    private static $instance;
    public $my_array = array();

// Rest code
}

答案 2 :(得分:0)

class Something extends MAIN {

    private static $instance;
    public static $my_array;

    public static
    function newInstance() {
        if (!self::$instance instanceof self) {
            self::$instance = new self;
        }
        return self::$instance;
    }

    function __construct() {
        parent::__construct();
        self::$my_array = array('test1', 'test2');
    }
}

您可以直接为$my_array分配值,而不必使用构造函数。

public static $my_array = array('test1', 'test2');

并从构造函数

中删除此行
self::$my_array = array('test1', 'test2');

使用时:

$int = Something::newInstance();
print_r(Something::$my_array);