我上了这个课:
class codici {
public $i;
public $len;
public $str;
public $type;
function __construct()
{
$this->getPad($this->i);
}
public function getPad($i)
{
return ''.str_pad($i,4,'0',0);
}
}
我以这种方式使用它:
$cod = new codici();
$cod_cliente = $cod->i = 1; //return 1
$cod_cliente = $cod->getPad(1); //return 0001
如果我直接调用该类,则__constructor调用内部方法getPad并返回错误的答案“ 1”。相反,如果我调用getPad方法,则返回正确的值'0001'。
我为什么不能使用$cod_cliente=$cod->i=1
?
答案 0 :(得分:1)
$cod_cliente = $cod->i = 1;
它将$cod_cliente
和$cod->i
的值都设置为1。因此,当您打印$cod_cliente
时,它将显示1。
但是在$cod_cliente = $cod->getPad(1)
的情况下,执行添加填充的代码并返回0001
。
答案 1 :(得分:0)
如果您希望构造函数返回某些内容,则应为其指定一个参数。而且由于您的getPad($i)
返回了一些信息,因此您需要回显/打印结果。
<?php
class codici {
public $i;
public $len;
public $str;
public $type;
function __construct($parameter)
{
$this->i = $parameter;
echo $this->getPad($this->i);
}
public function getPad($i)
{
return ''.str_pad($i,4,'0',0);
}
}
这将使您可以像这样调用课程:
$c = new codici(3);
会回显0003
。
答案 2 :(得分:0)
这是正确的代码:
class codici {
public $i;
public $len;
public $str;
public $type;
function __construct($parameter)
{
$this->i = $this->getPad($parameter);
}
public function getPad($i)
{
return str_pad($i,4,'0',0);
}
}
现在工作:
$c= new codici(1);
echo $c->i;//return 0001
echo $c->getPad(1);//return 0001
非常感谢。