__constructor类不返回零填充数字

时间:2018-06-27 10:14:27

标签: php class constructor zerofill

我上了这个课:

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

3 个答案:

答案 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

非常感谢。