Sha256: afac14214ceae49c1f815d4eaddbab88d9ed070161f4e355c6022ebcf7d2bfa0
Contents?: true
Size: 1.14 KB
Versions: 396
Compression:
Stored size: 1.14 KB
Contents
<?php class PhoneNumber { public function __construct($number) { $this->number = $this->clean($number); } public function number() { return $this->number; } public function areaCode() { return substr($this->number, 0, 3); } protected function prefix() { return substr($this->number, 3, 3); } protected function lineNumber() { return substr($this->number, 6, 4); } public function prettyPrint() { return '(' . $this->areaCode() . ') ' . $this->prefix() . '-' . $this->lineNumber(); } protected function clean($number) { return $this->validate(preg_replace('/[^0-9a-z]+/i', '', $number)); } protected function validate($number) { if ($number != preg_replace('/[^0-9]+/', '', $number)) { throw new InvalidArgumentException(); } if (strlen($number) == 11) { $number = preg_replace('/^1/', '', $number); } if (strlen($number) != 10) { throw new InvalidArgumentException(); } return $number; } }
Version data entries
396 entries across 396 versions & 1 rubygems