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

Version Path
trackler-2.2.1.180 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.179 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.178 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.177 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.176 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.175 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.174 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.173 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.172 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.171 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.170 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.169 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.167 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.166 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.165 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.164 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.163 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.162 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.161 tracks/php/exercises/phone-number/example.php
trackler-2.2.1.160 tracks/php/exercises/phone-number/example.php