Методы цепочки PHP
class AAA
{
function getRealValue($var)
{
$this->var = $var;
return $this;
}
function asString()
{
return (string) $this->var;
}
}
$a = new AAA;
$a->getRealValue(30);
$a->getRealValue(30)->asString();
Поэтому, когда я вызываю $a->getRealValue(30), он должен вернуть 30,
но когда я вызываю $a->getRealValue(30)->asString(), он должен возвращать "30" как строку ".
Спасибо
2 ответа
Поэтому, когда я вызываю $a->getRealValue(30), он должен возвращать 30, но когда я вызываю $a->getRealValue(30)->asString(), он должен возвращать "30" как строку ".
Это невозможно ( пока). когда getRealValue
возвращает скалярное значение, вы не можете вызывать методы для него.
Кроме того, ваш класс мало что значит для меня. Ваш метод называется getRealValue
но он принимает аргумент и устанавливает значение. Так и должно называться setRealValue
, Помимо метода цепочки, может быть, вы ищете ValueObject?
class Numeric
{
private $value;
public function __construct($numericValue)
{
if (false === is_numeric($numericValue)) {
throw new InvalidArgumentException('Value must be numeric');
}
$this->value = $numericValue;
}
public function getValue()
{
return $this->value;
}
public function __toString()
{
return (string) $this->getValue();
}
}
$fortyTwo = new Numeric(42);
$integer = $fortyTwo->getValue(); // 42
echo $fortyTwo; // "42"
Это не правда, $a->getRealValue(30) вернет объект $ a, а не значение. Но asString вернет значение в строковом формате.
Обычно, когда вы хотите получить что-то подобное, вы делаете:
$a->getRealValue(30)->get();
//Or
$a->getRealValue(30)->getAsString();