class __constructor 不要 return zerofill 数字

class __constructor don't return zerofill number

我有这个 class :

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

如果我直接调用 class,__constructor 调用内部方法 getPad 并且 return 的错误答案为“1”。相反,如果我调用方法 getPad return 正确的值 '0001'.

为什么我不能使用 $cod_cliente=$cod->i=1

$cod_cliente = $cod->i = 1; 

它将 $cod_cliente$cod->i 的值都设置为 1。因此当您打印 $cod_cliente 时,它将显示 1。

但是在 $cod_cliente = $cod->getPad(1) 的情况下,执行添加填充的代码并且 return 0001.

如果你想让你的构造函数return你应该给它一个参数。由于您的 getPad($i) return 需要 echo/print 结果。

<?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);
    }
}

这将允许您这样调用您的 class:

$c = new codici(3);

这将回显 0003

这是正确的代码:

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

非常感谢。