2011-05-05 149 views
1

例如我可以擴展php類型嗎?

class MyFloat extends float { 
    function Formatted() { 
    return number_format($this->value,2); 
    } 
} 

and later use 123.Formatted

+0

我真的不這麼認爲 – gd1 2011-05-05 00:35:00

回答

0

我不相信你可以作爲float是一個原始的不是類,但我可能是錯的。

2

我確信你不能那樣做,至少在float以上。

你可以做你自己的類,但...

class MyFloat { 
    private $value; 

    public function __construct($value) { 
     if (! is_float($value)) { 
      throw new Exception('Floats only'); 
     } 
     $this->value = $value; 
    } 

    public function formatted($places) { 
     return number_format($this->value, $places); 
    } 

    public function get() { 
     return $value; 
    } 
} 

PHP只需要一個__toInt()魔術方法:)

+0

謝謝,這個工作是否會與演員? (MyFloat)123.45? – DaveO 2011-05-05 00:49:26

+0

@DaveO我不這麼認爲,但我不是100%確定的。 – alex 2011-05-05 00:51:57

2

SplFloat您的擴展的樂趣。但是,目前的PHP版本中尚未提供。它不會以任何方式影響基本語言語義。它將永遠是一個單獨的課程。 (PHP通常被稱爲「unpure」OOP語言。)

但是對於「未來兼容性」,您可以選擇此名稱作爲擴展目的。

if (!class_exists("SplFloat")) { class SplFloat {} } 

class MyFloat extends SplFloat { 
    ... 
+0

+1我正在學習:) – alex 2011-05-05 00:44:53