begin process at 2012 05 28 11:42:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > TYPAGE AVEC LES TYPES PRIMITIFS DE PHP

TYPAGE AVEC LES TYPES PRIMITIFS DE PHP


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :typage, primitif, natif, typehinting, hinting Niveau :Initié Date de création :31/07/2009 Date de mise à jour :31/07/2009 23:07:51 Vu / téléchargé :2 831 / 101

Auteur : Arto_8000

Ecrire un message privé
Site perso
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 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

  • <?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');
  • ?>
<?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.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

31 juillet 2009 23:07:51 :
Re-upload du zip.

 Sources du même auteur

Source avec Zip CLASSE POUR L'API DE GOOGLE BOOK
Source avec Zip Source avec une capture PHP CHAT (AVEC PHP5 + PAF)
Source avec Zip PAF (PHP / AJAX FRAMEWORK)
Source avec Zip Source avec une capture AJAX CHAT V2.0
Source avec Zip RPG POUR IRC

 Sources de la même categorie

AFFICHÉ SUR UN TABLEAU AVEC PAGINATION ET BASE DE DONNÉES par stormxp
Source avec Zip Source avec une capture GENERATEUR D'ONGLET DE NAVIGATION PHP par pos123
FORMATER UN LIEN YOUTUBE, DAILYMOTION OU VIMEO POUR L'UTILIS... par kgb93
Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip Source avec une capture SYSTEME D'AUTHENTIFICATION PHP AVEC PROTÉCTION KEYLOGGER par mtrix000

Commentaires et avis

Commentaire de aKheNathOn le 03/08/2009 10:48:26 10/10

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 !

Commentaire de Calak le 25/01/2010 04:48:10

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

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Php & mysql [ par louna_ha ] Bonjour ,J'ai un formulaire contenant des boutons radio&nbsp;comme suit:&nbsp;&lt;form method="post" action="valid.php"&gt;&nbsp;&nbsp;&nbsp; &lt;tabl


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales