Hier im Forum bekommt ihr bei euren fragen schnelle hilfe.Hier geht es rund um das Web SeitenProgrammieren.Alles rund ums Javascript,Html,Php,Css und Sql.Auf fast allen Fragen haben wir eine Antwort.
Der Soforthilfe-chat verspricht das ,was sein Name sagt. Hier sind Leute Online die sofort ihre hilfe anbieten.Seht in der OnlineListe nach und wenn einer Online ist werdet ihr auch antwort bekommen. Admine ,Moderatoren und Helfer sind unsere Spezialisten in Sachen Web Programierung
71 Unwetterwarnungen in Deutschland
Die Datenbank wurde zuletzt am 02.08.2020 17:34:28 aktualiesiert
71

PHP Typehinting schon heute

Ein Traum!

function exampleString(string $string) {     echo "'$string' is a string!\n"; }  function exampleInt(int $int) {     echo "$int is an int!\n"; }  function exampleFloat(float $float) {     echo "$float is a float!\n"; }  function exampleBool(bool $bool) {     var_export($bool);     echo " is a bool!\n"; }  exampleString("Hello World!"); //'Hello World!' is a string! exampleInt(1); //1 is an int! exampleFloat(1.2); //1.2 is a float! exampleBool(false); //false is a bool!  exampleBool("not really bool"); /* Catchable fatal error: Argument 1 passed to exampleBool() must be an instance of Bool, string given, called in D:\xampp\htdocs\typehint\example.php on line 23 and defined in D:\xampp\htdocs\typehint\example.php on line 13 */ 

Und das alles gibts nicht erst in 3 Jahren sondern bereits heute! Tada! Leider – ihr habts geahnt – hat die Sache einen gehörigen Haken. Erstmal dass ich mich mit

require_once 'typehintclass.lib.php'; 

rumschlagen muss und zweitens (viel schlimmer) – das Ganze ist logischerweise kein valides PHP und erzeugt einen Error. Die typehint-lib bringt also einen eigenen Errorhandler mit, der auf fürchterlich unperformante und hässliche Weise den Fehler auseinandernimmt und dann entweder failed oder (wenn Typ korrekt war) den Fehler unter den Tisch kehrt und weitermacht.

public function errorHandler($errno, $errstr, $errfile, $errline, $errcontext) { 	if ($errno == E_RECOVERABLE_ERROR) { 		if ($parsedError = $this->parseErrorString($errstr)) { 			$backtrace = debug_backtrace(); 			$value = @$backtrace[1]['args'][$parsedError['argnum']-1]; 			if ($this->solveTypeHintFailure($parsedError['typehint'], $value)) { 				return; 			} 		} 	} 	if ($this->oldErrorHandler) { 		return call_user_func($this->oldErrorHandler, $errno, $errstr, $errfile, $errline, $errcontext); 	} else { 		return false; 	} } 

Tja, anders gehts leider nicht. Aber wär schön gewesen.