0

我有这门课:

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

4

3 回答 3

1
$cod_cliente = $cod->i = 1; 

它会将 $cod_cliente和的值都设置为$cod->i1。因此,当您 print 时$cod_cliente,它将显示 1。

但是以防万一$cod_cliente = $cod->getPad(1),添加填充的代码会执行并返回0001

于 2018-06-27T10:19:07.047 回答
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

于 2018-06-27T10:24:31.750 回答
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

非常感谢。

于 2018-06-27T13:01:43.037 回答