Alles een object maken werkt wel in principe fijn, maar omdat PHP geen operator overloading heeft wordt het al snel een ramp. Tel daarbij op dat je new X en $x->method niet kan combineren, en PHP ook geen autoboxing of autocasting heeft:
<?php
echo '<input type="text" value="' . htmlspecialchars($value, ENT_QUOTES) . '">';
?>
versus:
<?php
class String
{
private $data;
public function __construct($c_str)
{
$this->data = $c_str;
}
public function concat(String $other)
{
return new String($this->data . $other->data);
}
public function encodeSpecialChars($mode = ENT_COMPAT)
{
return new String(htmlspecialchars($this->data, $mode));
}
public function c_str()
{
return $this->data;
}
}
// trucje om (new String('xxx'))->concat mogelijk te maken
function r($x)
{
return $x;
}
PHP is geen Java, en ook geen C++, en ook geen Javascript en ook geen Ruby. Al die talen hebben hun eigen kracht, en de kracht van PHP is dat je een heleboel standaard functies gratis krijgt die allemaal compatible met elkaar zijn. Als je nu Java gaat nabouwen gooi je al dat voordeel weg (want die functies accepteren en returnen niet jouw String object)
Alles een object maken werkt wel in principe fijn, maar omdat PHP geen operator overloading heeft wordt het al snel een ramp. Tel daarbij op dat je new X en $x->method niet kan combineren, en PHP ook geen autoboxing of autocasting heeft:
<?php
echo '<input type="text" value="' . htmlspecialchars($value, ENT_QUOTES) . '">';
?>
versus:
<?php
class String
{
private $data;
public function __construct($c_str)
{
$this->data = $c_str;
}
public function concat(String $other)
{
return new String($this->data . $other->data);
}
public function encodeSpecialChars($mode = ENT_COMPAT)
{
return new String(htmlspecialchars($this->data, $mode));
}
public function c_str()
{
return $this->data;
}
}
// trucje om (new String('xxx'))->concat mogelijk te maken
function r($x)
{
return $x;
}
PHP is geen Java, en ook geen C++, en ook geen Javascript en ook geen Ruby. Al die talen hebben hun eigen kracht, en de kracht van PHP is dat je een heleboel standaard functies gratis krijgt die allemaal compatible met elkaar zijn. Als je nu Java gaat nabouwen gooi je al dat voordeel weg (want die functies accepteren en returnen niet jouw String object)
PHP vraagt dan naar de __toString method. En omdat ik deze klassen maak, zijn standaard functies niet meer nodig.