我不确定这是怎么命名的,但我已经在C#中看到了类似的东西:
decimal value = 12.01;
print obj->getAmount() // 1002.01
print obj->getAmount()->format('...'); // 1.002,01
所以,在PHP上我试过了类似的东西:
class Account {
public function getAmount() {
return new Decimal($this->_amount);
}
}
class Decimal {
private $_value;
public function __construct($value) {
$this->_value = $value;
return (float) $this->_value;
}
public function format() {
return number_format($this->_value, 2, ',', '.');
}
}
哪里可以通过两种方式获得价值:
$account->getAmount() // 1002.01
$account->getAmount()->format() // 1.002,01
但是,如果这是可能的,我会说缺少某些东西而且我不知道该怎么做。
答案 0 :(得分:1)
PHP无法将对象转换为浮点数或整数,只能转换为字符串。这可用于显示目的:
class Account {
public function __construct($amount) {
$this->_amount = $amount;
}
public function getAmount() {
return new Decimal($this->_amount);
}
}
class Decimal {
private $_value;
public function __construct($value) {
$this->_value = $value;
}
public function __toString() {
return strval($this->_value);
}
public function format() {
return number_format($this->_value, 2, ',', '.');
}
}
$account = new Account(1002.01);
echo $account->getAmount(), "\n"; // 1002.01
echo $account->getAmount()->format(), "\n"; // 1.002,01
但不要尝试做任何其他事情:
echo $account->getAmount() + 42; // 'Object of class Decimal could not be converted to int'
答案 1 :(得分:0)
在Account类中,您需要公布$ ammount变量 删除变量名称中的下划线
您需要在创建方法之前创建对象。