Php 类内的访问变量

Php 类内的访问变量,php,class,Php,Class,我是OO php新手,正在尝试访问$my_数组字符串(或者它是一个属性): 试过这个: $int = Something::newInstance(); echo $int->my_array; echo Something::my_array 但什么都不管用。有什么问题?编辑:我必须提到,我不应该在类内更改任何内容。或者不在Soemthing类内部进行更改就不可能做到这一点?$my_array现在是方法(=类中的函数)中的局部变量,因此无法在该方法之外读取。像这样更改它,使其成为对象的

我是OO php新手,正在尝试访问$my_数组字符串(或者它是一个属性):

试过这个:

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

但什么都不管用。有什么问题?编辑:我必须提到,我不应该在类内更改任何内容。或者不在Soemthing类内部进行更改就不可能做到这一点?

$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中,该变量本身称为属性。

$my_数组是构造函数的本地数组。您需要以这样一种方式声明它,即它具有类的作用域。你得照我说的做

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

// Rest code
}
您可以直接将值分配给
$my_array
,而无需位于构造函数中

public static $my_array = array('test1', 'test2');
并从构造函数中删除此行

self::$my_array = array('test1', 'test2');

使用时:

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

谢谢,但是在不更改类的情况下访问我的\u数组是否可能?相同,但不会调用\u构造。否。就像我说的,它现在是一个局部变量,您无法访问它。您必须将其存储在某个位置才能访问它。要么您必须将其存储在属性中,要么存储在类之外的变量中。@rufinus是的,它会的。静态newInstance创建一个尚不存在的实例。基本上,它的行为类似于一个单例。如果您不能更改
某些内容
,则扩展它,并覆盖_构造函数。这将起作用。问题是$my_数组是否应该是静态的,因为它是在构造函数中设置的,但这要由OP来确定。这是正确的,但也是不完整的。您还应该以不同的方式在构造函数中设置变量
($this->myarray=..)
,否则您仍将设置局部变量。您不需要严格地初始化属性,因为它在构造函数中被覆盖,但这没关系。
self::$my_array = array('test1', 'test2');
$int = Something::newInstance();
print_r(Something::$my_array);