Typage avec les types primitifs de php

Soyez le premier à donner votre avis sur cette source.

Vue 4 077 fois - Téléchargée 166 fois

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

Ajouter un commentaire

Commentaires

Calak
Messages postés
38
Date d'inscription
mercredi 28 août 2002
Statut
Membre
Dernière intervention
24 janvier 2010
-
Pour info, voici un package qui a la même utilité que ta source, mais qui, a mon sens, va plus loin d'un point de vue fonctionnalités et optimisations:
http://www.phpclasses.org/browse/package/4195.html
cs_aKheNathOn
Messages postés
575
Date d'inscription
dimanche 23 décembre 2001
Statut
Membre
Dernière intervention
23 octobre 2012
-
Tout simplement génial ce hack / c'est malalam qui va être content, il liste des hacks sur sa source http://www.phpcs.com/codes/ASTUCES-HACK-PHP_48766.aspx.

Bonne continuation !

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.