我正在尝试访问该类方法中对象的属性。这是我到目前为止所做的:
class Readout{
private $digits = array();
public function Readout($value) {
$length = strlen($value);
for ($n = 0; $n < $length; $n++) {
$digits[] = (int) $value[$n];
}
}
}
目标是能够说$x = new Readout('12345')
,这会创建一个新的Readout
对象,其$digits
属性设置为数组[1,2,3,4,5]
。
我似乎记得PHP中的范围存在一些问题,其中$digits
可能在Readout
内不可见,所以我尝试用$digits[] =
替换$this->$digits[] =
,但是给了我一个语法错误。
答案 0 :(得分:2)
良好的语法是:
$this->digits[]
答案 1 :(得分:0)
在您的案例中访问类方法中的类属性的正确语法是:
$this->digits[];
要创建一个设置为12345的新读取对象,您必须实现如下所示的类:
class Readout {
private $digits = array();
public function __construct($value)
{
$length = strlen($value);
for ($n = 0; $n < $length; $n++) {
$this->digits[] = (int) $value[$n];
}
}
}
$x = new Readout('12345');
答案 2 :(得分:0)
这是因为在类中调用变量的正确方法因您是将它们作为静态变量还是实例(非静态)变量访问而有所不同。
class Readout{
private $digits = array();
...
}
$this->digits; //read/write this attribute from within the class
class Readout{
private static $digits = array();
...
}
self::$digits; //read/write this attribute from within the class
答案 3 :(得分:0)
这也适用
<?php
class Readout{
public $digits = array();
public function Readout($value) {
$this->digits = implode(',',str_split($value));
}
}
$obj = new Readout(12345);
echo '['.$obj->digits.']';
?>