я могу расширить типы php? - PullRequest
1 голос
/ 05 мая 2011

например

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

и более поздние использования 123.Formatted?

Ответы [ 3 ]

2 голосов
/ 05 мая 2011

Я уверен, что вы не можете этого сделать, по крайней мере, на 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() магический метод:)

2 голосов
/ 05 мая 2011

Существует SplFloat для ваших дополнительных удовольствий. Тем не менее, пока недоступно в текущих версиях PHP. И это никак не повлияет на базовую семантику языка. Это всегда будет отдельный класс. (PHP - это то, что обычно называют «нечистым» языком ООП.)

Но для "будущей совместимости" вы можете выбрать это имя для расширения.

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

class MyFloat extends SplFloat {
   ...
0 голосов
/ 05 мая 2011

Я не верю, что вы можете, так как float - это примитив, а не класс, но я могу ошибаться.

...