конструктор класса __ не возвращает номер нулевого заполнения

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

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 ?

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,

0

Другие решения

$cod_cliente = $cod->i = 1;

Это установит значение для $cod_cliente а также $cod->i оба к 1. Так что, когда вы печатаете $cod_cliente, он покажет 1.

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

1

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

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
По вопросам рекламы [email protected]