Als erstes Mal: Bin mir nicht sicher ob ich hier richtig bin, da ich aber davon ausgehe, dass diese Idee als Software Design gedacht ist, poste ich dies hier rein.
Zur Entstehung der Gedanken:
Hab mir am Wochenende als ich in der Badewanne lag ein paar Gedanken zu OOP gemacht und mir kam dann mit dem Ausruf: "Heureka!", die Idee:
Extreme Type Casting
Was andere Programmiersprachen, wie Java, C oder andere, können kann PHP doch schon längst!
Wieso nicht für alle Datentypen Objekte anlegen? Dann hätte man doch wesentlich weniger Validierungsarbeit. Man müsste nur einmal am Anfang ein paar Gedanken machen. Sich für verschiedene Datentypen Klassen anlegen. dann könnte man sich doch viel Validierungsarbeit sparen, da ja sowieso gewährleistet ist, welche Datentypen in die Klassen kommen.
Ich hab da mal was vorbereitet:
Abstrakte Klasse Datatype
Klasse für Integer
Klasse für Boolean
Verwendung der Datentypen-Klassen:
Ausgabe
Ich wollte einfach mal eine Diskussion anstoßen im Bezug auf so ein Software-Design.
Für wie sinnvoll haltet ihr diese Idee?
Zur Entstehung der Gedanken:
Hab mir am Wochenende als ich in der Badewanne lag ein paar Gedanken zu OOP gemacht und mir kam dann mit dem Ausruf: "Heureka!", die Idee:
Extreme Type Casting
Was andere Programmiersprachen, wie Java, C oder andere, können kann PHP doch schon längst!
Wieso nicht für alle Datentypen Objekte anlegen? Dann hätte man doch wesentlich weniger Validierungsarbeit. Man müsste nur einmal am Anfang ein paar Gedanken machen. Sich für verschiedene Datentypen Klassen anlegen. dann könnte man sich doch viel Validierungsarbeit sparen, da ja sowieso gewährleistet ist, welche Datentypen in die Klassen kommen.
Ich hab da mal was vorbereitet:
Abstrakte Klasse Datatype
PHP-Code:
<?php
abstract class Datatype
{
protected $_value;
public function __construct($value)
{
$this->_value = $this->_validate($value);
}
public function __toString()
{
return (string)$this->_value;
}
public function get()
{
return $this->_value;
}
abstract protected function _validate($value);
}
PHP-Code:
<?php
class MyInt extends Datatype
{
protected function _validate($int)
{
if ($int !== null && preg_match("/^\d*$/", $int) > 0) {
return (int)$int;
}
return 0;
}
}
PHP-Code:
<?php
class MyBool extends Datatype
{
protected function _validate($bool)
{
if (is_bool($bool)) {
return $bool;
} elseif (preg_match("/^[0-1]{1}$/", $bool) > 0 && in_array($bool, array(0,1))) {
return ($bool ? true : false);
}
return false;
}
}
PHP-Code:
<?php
class Artikel
{
private $_artikelID,
$_active;
public function __construct(MyInt $id, MyBool $active)
{
$this->_artikelID = $id;
$this->_active = $active;
}
public function test()
{
echo 'ArtikelID: ' . $this->_artikelID->get() . '<br />'.
'Active: ';var_dump($this->_active->get());
}
}
$artikelID = new MyInt(5);
$active = new MyBool('false');
$test = new Artikel($artikelID, $active);
$test->test();
Code:
ArtikelID: 5 Active: bool(false)
Für wie sinnvoll haltet ihr diese Idee?
Kommentar