我是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类中进行更改,就不可能做到这一点?
答案 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);