Typage avec les types primitifs de php

Description

Cette source est un "hack" qui permet de faire du typage avec les types primitifs de PHP (boolean, integer, double, string, resource, object, array). Pour le principe, je me suis fortement inspiré de ce qui avait déjà été proposé sur cette page (http://ch2.php.net/language.oop5.typehinting) et je l'ai optimisé pour que ça soit plus performant.

Aussi, j'ai rajouté la possibilité que les erreurs dues au typage incorrect des variables soient seulement des exceptions au lieu des erreurs fatales impossibles d'attraper avec un try/catch.

Dans le zip, il y a 2 exemples d'utilisation. La première est un exemple simple et la deuxième montre comment intégrer le script si vous avez déjà un handler d'erreur dans votre script.

Source / Exemple :


<?php
function handlePrimitiveType($level, $message) {
	if($level == E_RECOVERABLE_ERROR) {
		if (($pos = strpos($message, 'must be an instance of')) !== false) {
			$posStart = $pos + 23;
			$posEnd = strpos($message, ',', $posStart);
			$expected = substr($message ,$posStart, $posEnd - ($posStart));
			
			$posStart = $posEnd + 2;
			$givin = substr($message, $posStart, strpos($message, ' given', $posStart) - $posStart);
			
			if ($expected == $givin) {
				return true;
			}
			
			throw new Exception($message);
		}
	}
	
	return false;
}

set_error_handler('handlePrimitiveType');
?>

Conclusion :


C'est à utiliser avec modération, car le tout reste plus lent que de simplement utiliser les fonctions natives de PHP is_string, is_int, etc.

Pour ceux qui veulent à tout prix faire du typage avec les types primitifs, ça reste la meilleure solution.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.