Devenir membre club
Connectez vous
Aide & règlement
Votre 1ère visite
Le règlement
Contacter les admins
Contacter le webmaster
Questions & réponses
Comment soutenir CodeS-SourceS
Comment faire un lien vers CodeS-SourceS
Autres questions
A propos & don
A propos du réseau
Les modérateurs
Remerciements
Faire un don
Le livre d'or
Tous les livres
Les dernières parutions
Les plus consultés
Les critiques
Le top des ventes
Le top favoris des membres
Recevoir des livres blancs
Tous les thèmes
Les derniers messages
Les nouveaux messages
Poser une question
Le Chat - IRC
Tous les tutoriels
Ajouter un tutoriel
Les tutoriels en vidéo
Les formations vidéos
Tous les codes
Ajouter un code
Filtrer par catégorie
Filtrer par date
Les plus récents
Les mis à jour
Les codes par jour
Filtrer par niveau
Niveau débutant
Niveau initié
Niveau expert
Filtrer par type
Les codes avec capture
Les codes avec zip
Filtrer par qualité
Les plus populaires
Les plus populaires du mois
Les plus téléchargés
Les mieux notés
Top par catégorie
Top des favoris
Filtrer par auteur
Tous les auteurs
Le top des membres
Les snippets
Déposer votre CV
Consulter les offres d'emploi ou de stage
Consulter les CVs
Déposer une offre d'emploi ou de stage
Modèles de CV et lettres
Trouver une convention collective
Les écoles d'informatique
Toutes les écoles
Ajouter une école
Les outils
Outils pour développeurs
Trouver des ressources
Base de données de CodeS-SourceS
Télécharger les meilleurs logiciels
Comparer les prix
Envoyer des ecards
Création de bannières
Annuaire de la prog
Tous les sites
Ajouter votre site
Le dico de la prog
Toutes les définitions
Ajouter une définition
Les évènements
Tous les évènements
Les évènements à venir
Ajouter un évènement
Téléchargements
CodeS-SourceS Toolbox
CodeS-SourceS Toolbar
Toolbar pour FireFox
Fonds d'écran
Les compil's
Nos partenaires
Magazine Programmez
Frontier.fr
Xiti
ProgOnline
Winwise
Editions Eyrolles
Toute la liste
Les RFC
CS
VB, VB.NET
ASP.NET,ASP
C, C++
ColdFusion
PHP
Javascript
Delphi
Flash
Java
Graphisme
Irc
Assembleur
C#
Mobilité
SQL
Foxpro
Python
Regex
Flex
Windev
Ce site au démarrage
begin process at 2012 05 28 01:02:47
Accueil
Codes
Tutoriels
Forum
Livres
Emploi
Services
Connexion
Trouver un code source :
dans
Tout le site
Codes
Tutoriels
Forum
Blogs
Livres
RFC
Icones
News .NET
Boutique
[ Dernières recherches ]
Veuillez saisir votre recherche... Ex: smtp, lire un fichier, rs232
Options de recherche :
161 commentaire(s) de aKheNathOn
sur des sources sur
phpcs
Déposé sur
Tests unitaires
C'est du joli travail, j'adhère vraiment de plus en plus à ton mini-framework !
Quelques petites choses supplémentaires histoire de l'améliorer :
Dans la classe TestUnitaire, il te manque une fonction fail($message) qui permet de forcer le log à afficher un statut de fail sur le test en cours. C'est utilisé si on sort d'un simple assert :
if ($cond1 != $val && ($cond2 > $max || $cond2 < $min) fail("valeur aux limites);
D'ailleurs tu peux aussi lors de la génération des classes la rajouter (dans TestManager --> write_method : dans le corp de la méthode rajoutes :
$this->fail('Not implemented yet');
Dans le TestManager toujours, dans la méthode launch, fais un try catch sur l'exécution du test car les erreurs peuvent faire arrêter le test sinon, à logguer aussi dans le statut d'exécution.
Il ne manque plus grand chose à ta librairie, juste le packaging : un nom de projet, de la phpdoc sur les classes, un repository SVN et un site web (sourceforge est pas mal pour ce genre de choses). Si tu le mets sous GIT (https://github.com/) je vais peut-être en faire un fork :)
En tout cas merci de partager ton source, je vais surement l'utiliser :)
Bonne prog et tiens-nous au courant,
akh
Posté le :
17/10/2011 17:54:28
Déposé sur
Tests unitaires
C'est très bien, pour les setup et teardown - ça permet de se créer un contexte de tests ISO et mieux cloisonnés - important pour éviter les effets de bords de certains tests - petit bémol quand tu sort du scope du $this le cloisonnement n'est plus géré ($_REQUEST, $_SESSION, $GLOBALS ... appels vers des variables statiques) - mais ce type d'effet de bord est très minime.
Parcontre je ne mettrait pas les appels (setUp, test_..., tearDown) dans l'instanciation de la classe de test mais je ferais une classe TestManager à part, qui elle lencerait par exemple les tests sur une classe, ou sur un ensemble de classes. L'objet devrait à mon sens être reconstruit à chaque execution de test.
La classe de log c'est bien la class Débug que tu as actuellement, elle devrait effectivement être en mode singleton et juste stocker les infos.
La classe TestManager s'occuperait de dumper les résultats en fin de test par exemple. Pour la structure de débug, faudrait rajouter un niveau de log sur la classe en cours d'execution vu que c'est multi-classes.
J'utiliserais les classes de Reflection dans le TestManager pour gérer les annotations de documentation, histoire d'associer des commentaires aux fonctions testées et de les affichers dans les résultats.
NB : Un truc utile dans le TestManager est de pouvoir générer un fichier de test unitaire en lui passant en argument un nom de classe.
Si tu peux faire le tout en moins de 1000 lignes de codes, tu tiens un framework de tests unitaires complet et surtout facile d'utilisation.
:) bon courrage
Posté le :
10/10/2011 17:33:30
Déposé sur
Tests unitaires
Bonjour Pierre,
Un source très intéressant, les asserts en PHP sont assez peu utilisés donc c'est très instructif d'en voire un exemple.
Le code est très simple et j'aime ton approche KISS et justifiant le fait de ne pas passer par un framework de type PHPUnit.
Je commence par un point "obscur" sur le :
$this->_return[$this->iNbError][$config] = $$config; la liste des clés étant limitée par la signature de la fonction je ne vois pas trop l'intérêt de cette boucle.
Un simple code aurait pû suffire :
$this->_return[] = array(
'line' => $line,
'code' => $code
);
--> Pour faire un peu d'optimisations :) <--
Dans la classe Debug :
- Les variables iNbError, et _config n'ont pas besoin d'exister
A la place de iNbError, tu peux utiliser : sizeof($this->_return)
- De la manière dont tu as écrit ta classe Debug n'est pas un singleton, donc soit supprimer oInstance soit en faire un vrai : cf partie PHP 5 : http://fr.wikipedia.org/wiki/Singleton_%28patron_de_conception%29
Dans la classe TestUnitaire :
- J'aurais plutôt mis l'instanciation des asserts dans les DEBUG
- Pour permettre d'instancier les asserts à partir des DEBUG j'aurais éventuellement loggué dans Debug toutes les assertions, ainsi j'aurais également eu le log de tout ce qui est OK.
Sur le principe, il me manque un élément, c'est le contexte d'implémentation des tests unitaires : je présume qu'actuellement on doit le fait en bloc dans le construct. Au passage dans la classe TestUnitaire ton __construct devrait être final public pour éviter les effets de bords de l'héritage.
* Y'à t'il moyen d'avoir un cloisonnement des contextes avec plusieurs fonctions ...
* Si dans une exécution on veut exécuter plusieurs classes de tests à la fois ...
Si tu règle ces petits points je pense que ta classe à vraiment un bon potentiel car c'est pas vraiment intéressant de déployer, configurer et customiser PHPUnit, alors que ton code serait beaucoup plus facilement adaptable.
Bonne continuation,
akh
Posté le :
10/10/2011 14:50:47
Déposé sur
Créer un parseur ll
J'ai hâte de lire ton tuto car je suis un peu imperméable aux formules mathématiques et théoriques et le site de Levee ne m'a pas plus aidé. Je trouve que la théorie des ensembles embrouille plus que n'explique, un bon tuto et une bonne dose de vulgarisation ne ferais pas de mal :))) surtout qu'après quelques recherches acharnées sur google j'ai rien trouvé de convaincant.
Bon courage pour ton tuto et merci pour cette source :)
Posté le :
18/04/2011 14:55:01
Déposé sur
Créer un parseur ll
Petite correction à la fin de ton code, faut utiliser NodeParser au lieu de XMLParser.
En lisant le code je me rends compte que le buffer initialement utilisé est tronqué par son début à chaque itération (unbufferize), cela ne risque pas sur des gros buffers de ralentir le parsing ? Y'à t'il une raison pour laquelle on ne pourrait pas tout simplement utiliser une boucle et itérer sur un curseur qui avance sur le texte ?
Autre point, c'est que l'accès au buffer se fait de manière statique ce qui ne devrait pas trop être dérangeant, mais je me demandais pourquoi ne pas avoir utilisé des instances d'objets, ce serait la même conso mémoire, avec la possibilité de créer plusieurs instances chacune ayant son contexte ...
Sinon j'adore le côté simple ... mais j'aurais fait une classe reader à part de la classe qui parse (cela permettrait de lire un buffer ou un fichier selon le reader utilisé).
Je viens de lire un article wiki sur le sujet, je ne suis pas pour autant plus avancé ... pourrais-tu revenir un peu sur le principe de fonctionnement des parseurs LL car à priori ils ont l'air assez puissants ...
Posté le :
18/04/2011 11:32:56
Déposé sur
Créer un parseur ll
RIEN QU'UN MOT : J'ADORE !!!
J'ai bossé sur un parseur mais j'ai fait l'implémentation de manière intuitive, et après quelques refactoring je suis tombé sur quelque chose d'assez similaire, mais un peu trop lourd à mon sens.
Je l'essaye et je reviens pour te faire un retour, en tout cas merci pour ce code.
Posté le :
18/04/2011 10:55:55
Déposé sur
Myggl google api class for beginerz
Le REST (Api AJAX) est à la mode ces derniers temps et c'est très simple de comprendre le pk, c'est tout simplement plus compatible contrairement à SOAP...(je suis pas trop d'accord avec lefauve sur le manque d'utilité d'une classe exploitant REST plutôt que du SOAP)
Pour le côté PHP (alors que REST semble que pour JavaScript) ça se justifier, car même si une alternative SOAP existe, c'est plus sympa de faire un file_get_contents sur une URL avec des paramètres en GET plutôt que d'utiliser des librairies SOAP qui ne sont pas distribuées par défaut sur toutes les versions...
J'insiste un peu sur cURL mais dommage de l'avoir utilisé forçant à avoir cette librairie, et le côté obscur de REST étant, vu que c'est moins formalisé je spaghéttise mon code ... les retours JSON devraient être toujours encapsulés dans des classes spécifiques ...
Posté le :
28/03/2011 12:50:19
Déposé sur
Myggl google api class for beginerz
Petit conseil pour rendre ta librairie plus compatible avec tout genre de config : je te conseillerais d'oublier cUrl et d'utiliser un simple fopen sur l'URL ...
Sinon à mon avis il te manque une classe stockant le résultat de retour et dans google il te faudrait une fonction privée pour gérer le retour php et google...
bonne continuation,
akh
Posté le :
28/03/2011 11:17:47
Déposé sur
Wikiloc : l'article wikipedia sur votre mobile sfr le plus pr...
Oui, effectivement je viens de télécharger et voir le sdk red 1.1, ce qui est bien en SOAP c'est l'aspect orienté objet de ses wrappers, et une api REST devrait à mon sens également être orientée objet car sinon le code deviendra vite brouillon ...
Pour certaines api (du moins celle que j'ai testé) le json n'est pas implémenté (http://ws.red.sfr.fr/red-ws/red-b2c/resources/event/consume?ResponseType=json&token=81e3d203dd52a852fa986624c718929c) et pour de l'ajax/javascript c'est quand même plus sympa à parser (surtout que REST existe à mon sens prioritairement pour ce genre de language)
Sinon après un tour sur les différentes API, c'est franchement top, y'à moyen de se faire plaisir, parcontre ça reste un peu cher si ce n'est pas à but lucratif :)
ps : 10/10 pour les apis sfr :)), et pi j'aime bien l'idée de SFR de venir exposer ses travaux sur ce réseau opensource :)
Posté le :
02/03/2011 15:20:42
Déposé sur
Wikiloc : l'article wikipedia sur votre mobile sfr le plus pr...
Pas mal du tout, dommage que le code ne soit pas facilement modifiable et ré-utilisable, mais l'idée est tellement bien que j'en ait refait une version plus propre :
http://www.phpcs.com/codes/CLASSE-WIKILOC_52878.aspx
Etonnant ... SFR ne donne pas ses consommateurs d'api en PHP ?
Posté le :
02/03/2011 12:05:51
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Nos sponsors
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALE
IMAGINE CUP 2012, MAKE A SIGN EN FINALE
par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article
par junarnoalg
KINECT 1.5 IS OUT !
KINECT 1.5 IS OUT !
par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article
par Vko
LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI)
LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI)
par richardc
Mise à jour des Web API du 14 Mai Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris Mise à jour de Team Foundation Service MechCommander 2 sur Windows 8 Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article
par richardc
REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER
REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER
par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article
par Groc
SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES
SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES
par junarnoalg
Dernièrement, nous avons migré le site myTIC vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs. Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article
par junarnoalg
La suite
RSS
Forum
RE : CHANGER LE CONTENU D'UNE PAGE WEB EN PHP EN CLIQUAN SUR UN BOUTON (J'AI BESOIN D'AIDE)
RE : CHANGER LE CONTENU D'UNE PAGE WEB EN PHP EN CLIQUAN SUR UN BOUTON (J'AI BESOIN D'AIDE)
par jx53
Cliquez pour lire la suite
par jx53
RE : GOOGLE MAP
RE : GOOGLE MAP
par inwebo
Cliquez pour lire la suite
par inwebo
GOOGLE MAP
GOOGLE MAP
par fatmanajjar
Cliquez pour lire la suite
par fatmanajjar
RE : REMPLIR UN TABLEAU à PARTIR DE LA FIN
RE : REMPLIR UN TABLEAU à PARTIR DE LA FIN
par Jeromedu79
Cliquez pour lire la suite
par Jeromedu79
RE : MYSQL_FETCH_ASSOC
RE : MYSQL_FETCH_ASSOC
par moumenxavi
Cliquez pour lire la suite
par moumenxavi
La suite
RSS
Côté IT
Utiliser Office 365 pour un projet d?équipe - PART 2
Utiliser Office 365 pour un projet d?équipe - PART 1
SharePoint 2007 : Installation du Service Pack 3 de MOSS
SharePoint 2007 : Installation du Service Pack 3 de WSS V3
Installation de SQL Server DENALI CTP3
Mise à jour de Windows 2003 R2 vers Windows 2008 R2
Upgrade de SQL Server 2005 vers SQL Server 2008 R2
La suite
RSS
Offres d'emploi
Recherche Développeur PHP
Recherche Développeur Sharepoint
Recherche Développeur C++
Recherche Recherche développeur web ASP et ASP.Net
Recherche Analyste Programmeur Adélia
Recherche Développeur eZ Publish confirmé
Recherche AP (H/F) ACCESS EXCEL VBA
Déposer une offre
La suite
RSS
Formations Video
Dreamweaver CS6 : Les fondamentaux
Adobe Muse : Les indispensables
Coffret avantage : Les nouveautés d'Adobe Design Standard CS6
Coffret avantage : Les nouveautés d'Adobe Design & Web Premium CS6
Coffret avantage : Les nouveautés d'Adobe Master Collection CS6
Coffret avantage : Les nouveautés d'Adobe Production Premium CS6
Microsoft Office Outlook 2003 : Les indispensables
La suite
RSS
Appels d'offres
Realisation d-une version 2 d-un site e-commerce existant sous prestashop-REPUBLICATION
Budget :
5 000€
Recherche Infogerance Serveur Debian Linux
Budget :
1 800€
Creation d-un site vitrine avec MagentO
Budget :
2 000€
La suite
RSS
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)
SDEVIS-FACTURES VLPRO (8.1.0.3)
sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa...
Cliquez pour télécharger sDEVIS-FACTURES vlPRO
974 Application Server (12.2.4.6)
974 APPLICATION SERVER (12.2.4.6)
Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc...
Cliquez pour télécharger 974 Application Server
vPicture (1.4.2.1)
VPICTURE (1.4.2.1)
Avec vPicture, hébergez vos images facilement et rapidement. vPicture est un utilitaire simple, ...
Cliquez pour télécharger vPicture
Easy-Planning (2.2.1.6)
EASY-PLANNING (2.2.1.6)
Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au...
Cliquez pour télécharger Easy-Planning
COM-BACKUP (2.0)
COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
+ de logiciels à télécharger
Vidéos drôles
Halloween Party
Terry Tate Office Linebacker Superbowl 2003
Jeu vidéo instructif
C'est un véritable vol !
Banana Song
Comment attraper la grippe A
Parodie Pub Window 7
La suite
RSS
Sondage...
Votre navigateur n'utilise pas le javascript, pour
voter aux sondages de ce site, cliquez ici
Statistiques
1 903 649
membres
0
nouveaux aujourd'hui
16 195
membres club
Comparez les prix
Archos Tablette PC ARNOVA ARNOVA 10 4GB
Entre 200€ et 210€
Visiter le guide achat
CalendriCode
Mai
2012
L
M
M
J
V
S
D
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Consulter la suite du CalendriCode
Photothèque
Visiter la photothèque
CS Tool Box
A découvrir