У меня есть этот класс:
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
?
Если вы хотите, чтобы ваш конструктор возвращал что-то, вы должны дать ему параметр. И так как ваш 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
,
$cod_cliente = $cod->i = 1;
Это установит значение для $cod_cliente
а также $cod->i
оба к 1. Так что, когда вы печатаете $cod_cliente
, он покажет 1.
Но в случае $cod_cliente = $cod->getPad(1)
, код для добавления заполнения выполняется и возвращает 0001
,
это правильный код:
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
большое спасибо.