Ecco la seconda parte,
chi ha già masticato OOP sarà in grado di completare la classe con i getters ma per gli altri posto l'implementazione dei metodi necessari.
Codice PHP:
public function getScheme() {
return $this->scheme;
}
public function getHost() {
return $this->host;
}
public function getPath() {
return $this->path;
}
public function getQuerystring() {
return $this->querystring;
}
Et voilà ecco i nostri getters per la classe
niente di complesso mi sembra. In questo modo diamo la possibilità di accedere alle proprietà private della classe anche dall'esterno.
ed ecco la nostra classe completa:
Codice PHP:
final class url {
private $scheme;
private $host;
private $path;
private $querystring;
public function __construct( $url ) {
if ( !filter_var( $url, FILTER_VALIDATE_URL, array( FILTER_FLAG_SCHEME_REQUIRED, FILTER_FLAG_HOST_REQUIRED ) ) ) {
throw new Exception( "L'url he hai specificato non è valido!" );
}
$url = parse_url( $url );
$this->scheme = $url['scheme'];
$this->host = $url['host'];
if ( isset( $url['path'] ) ) {
$this->path = $url['path'];
}
if ( isset( $url['query'] ) ) {
$this->queryString = $url['query'];
}
}
public function getScheme() {
return $this->scheme;
}
public function getHost() {
return $this->host;
}
public function getPath() {
return $this->path;
}
public function getQuerystring() {
return $this->querystring;
}
}
Molto bene, abbiamo una classe che ci permette di modellare un "value object" niente di complesso mi sembra, nella 2a parte diamo un po' di movimento alla classe ma per ora mi fermo qui.
Spero sia chiaro e utile a qualcuno per chi ha domande rispondete sotto e cercate di restare in tema.
Grazie 
Andrea