Kolejna magiczna metoda, tym razem określająca w jaki sposób zostanie zaprezentowany obiekt, jeżeli spróbujemy go potraktować jako string – rzutując do napisu albo próbując drukować przez echo.
Nasza klasa URL:
<?php
class URL {
private function __construct(
public $url,
public $response_code){}
public static function getURL($url, $response_code=302){
if(filter_var($url, FILTER_VALIDATE_URL)){
return new URL($url, $response_code);
}
}
public function __invoke(){
header("Location: {$this->url}");
http_response_code($this->response_code);
exit;
}
}
$url = URL::getURL("https://www.google.com", 302);
$url();
Piszemy magiczną metodę toString:
<?php
class URL {
//(...)
public function __toString()
{
return "This object will redirect you to {$this->url} with status code {$this->response_code}";
}
}
$url = URL::getURL("https://www.google.com", 302);
echo $url;
//This object will redirect you to https://www.google.com with status code 302
Jak widać, nic trudnego.