亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP魔術方法__toNumber()將對象轉換為數字

PHP魔術方法__toNumber()將對象轉換為數字

PHP
神不在的星期二 2021-06-30 13:23:40
有沒有辦法在PHP中實現對象到數字的轉換?有一個方便的魔術函數__toString()可以將對象轉換為字符串,但是如何將對象轉換為數字呢?使用示例:<?phpclass Foo{    /**     * @var float     */    private $factor;    public function __construct(float $factor)    {        $this->factor = $factor;    }}$foo = new Foo(1.23);$boo = 2;$result = $foo*$boo;//wanted output 2.46echo $result;該代碼生成 PHP 通知(PHP 7.3)Foo 類的對象無法轉換為數字在PHP的魔術方法列表沒有任何__toNumber()方法,但也許有一個解決方法是什么?顯然,除了使用 getter 之外,例如:getFactor() : float{     return $this->factor;}你有什么主意嗎?
查看完整描述

2 回答

?
手掌心

TA貢獻1942條經驗 獲得超3個贊

在我完成我的回答之前,已經發布了帶有解決方案的評論,但使用__invoke()是您可以獲得的最接近的:


<?php


class Foo

{

    /**

     * @var float

     */

    private $factor;


    public function __construct(float $factor)

    {

        $this->factor = $factor;

    }


    public function __invoke()

    {

        return $this->factor;

    }

}


$foo = new Foo(1.23);

$boo = 2;


$result = $foo() * $boo;


//wanted output 2.46

echo $result;


查看完整回答
反對 回復 2021-07-09
?
DIEA

TA貢獻1820條經驗 獲得超2個贊

我想出的另一個解決方法是:


<?php


class Foo

{

    /**

     * @var float

     */

    private $factor;


    public function __construct(float $factor)

    {

        $this->factor = $factor;

    }


    public function __toString()

    {

        return (string) $this->factor;

    }

}


$foo = new Foo(1.23);

$boo = 2;


$result = (string) $foo * $boo;


//wanted output 2.46

echo $result;


echo " ";


//double

echo gettype($result);

使用起來看起來非常不直觀,但會產生想要的結果。


查看完整回答
反對 回復 2021-07-09
  • 2 回答
  • 0 關注
  • 295 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號