конструктор класса __ не возвращает номер нулевого заполнения - PullRequest
0 голосов
/ 27 июня 2018

У меня есть этот класс:

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

Если я вызываю класс direct, __constructor вызывает внутренний метод getPad и возвращает неправильный ответ '1'. Вместо этого, если я вызову метод getPad, верните правильное значение «0001».

Почему я не могу использовать $cod_cliente=$cod->i=1?

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

Если вы хотите, чтобы ваш конструктор возвращал что-то, вы должны дать ему параметр. А поскольку ваш 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.

0 голосов
/ 27 июня 2018

это правильный код:

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

Большое спасибо.

0 голосов
/ 27 июня 2018
$cod_cliente = $cod->i = 1; 

Будет установлено значение для $cod_cliente и $cod->i для обоих значений 1. Поэтому, когда вы печатаете $cod_cliente, будет отображаться 1.

Но в случае $cod_cliente = $cod->getPad(1) код для добавления заполнения выполняется и возвращает 0001.

...