JeuWeb - Crée ton jeu par navigateur
[Framework] PHPRedesign - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Framework] PHPRedesign (/showthread.php?tid=5818)

Pages : 1 2 3 4


RE: [Framework] PHPRedesign - srm - 22-11-2011

Donne l'utilité des Collections et Hashmap stp.
Tout ceci en tout cas ne change pas ce que j'ai dit plus haut Smile
-> C'est en gros rajouter une surcouche à tout l'ensemble des types de base pour avoir un truc plus propre et plus "langage typé", c'est un travail "intéressant" mais au final pas trop utile en réel, tu ne pourras que toucher de loin la force d'un langage typé.


RE: [Framework] PHPRedesign - niahoo - 22-11-2011

(22-11-2011, 03:04 PM)oxman a écrit : C'est en gros rajouter une surcouche à tout l'ensemble des types de base pour avoir un truc plus propre et plus "langage typé", c'est un travail "intéressant" mais au final pas trop utile en réel, tu ne pourras que toucher de loin la force d'un langage typé.

C'est bien pour ça que je disais : « il faut voir ce que ça apporte réellement par rapport à la lenteur ajoutée » parce que je me dis qu'avec de bons tests unitaires, y a moyen de faire quelque chose de propre.

D'un autre côté les types hints c'est super aussi.


RE: [Framework] PHPRedesign - qwarnant - 22-11-2011

(22-11-2011, 03:59 PM)oxman a écrit : Donne l'utilité des Collections et Hashmap stp.
Tout ceci en tout cas ne change pas ce que j'ai dit plus haut Smile
-> C'est en gros rajouter une surcouche à tout l'ensemble des types de base pour avoir un truc plus propre et plus "langage typé", c'est un travail "intéressant" mais au final pas trop utile en réel, tu ne pourras que toucher de loin la force d'un langage typé.

Les collections permettent de stocker dans une structures de données des objects de même type. Par exemple, je suis fermier et je veux regrouper toutes mes vaches dans un même endroit. Je vais faire appel à une collection qui contient toute une série de méthodes prédéfinies (add, remove, size, clear, ...) pour gérer ce sheptel de vaches.
Au constructeur de collection, je passe le generic, qui est le type d'object de la collection. Je passe également la structure de données que je veux pour implémenter la collection.
Normalement, dans le meilleur des mondes, Collection devrait être une interface. Mais à cause des limites du langage, je suis obligé de gérer les ClassCastException, je propose donc une solution alternative qui permet de garder le principe de la collection, tout en l'adaptant pour le PHP.

Code PHP :
<?php 
$sheptel
= new Collection(new String('Vache'), new TArray(new String('Vache'), new Int(10)));
$lola = new Vache(new String('Lola'), 2, 200,30);
$sheptel->add($lola);
$sheptel->add(new Vache(new String('Margherite'), 1.5, 180,25));
echo
'Taille de la collection : '.$sheptel->size().'<br />';

Une Hashmap, comme son nom l'indique, enregistre tout une série d'objet dans une structure de données en utilisant la méthode hashcode définie dans la classe de l'objet dont la hashmap est remplie.
Exemple, si j'ai un objet String, que sont hashcode retourne 1 (c'est très simple dans ce cas ci), elle sera positionné en 1 dans la hashmap.
Si je peux récupérer l'object, je fais un get(String) et mon hashcode va directement à l'indice. Je te conseille de chercher sur Google pour le reste car les collections et les hashmaps sont des concepts assez important, il me serait assez long de tout expliquer ici. Mes méthodes seront documentées en PHPDoc, vous pourrez donc facilement comprendre !

Une classe que je viens d'implémenter également est la classe Properties, qui étend hashtable est qui permet de charger des paramètres de configuration d'un fichier sous la forme :
Citation :param1=urlserveur
param2=nomserveur
L'utilisation :
Code PHP :
<?php
$props
= new Properties();
$props->load(new FileInputStream('fichier_conf.txt'));
$param1 = $props->getProperty('param1'); //Return String
?>
La classe FileInputStream est une classe qui gère l'ouverture de fichier, mais formalisé en objet avec des IOException en cas de problème.

Ce n'est là que le début, un travail énorme est encore à fournir pour implémenter la majeur partie des points manquants de PHP.


RE: [Framework] PHPRedesign - qwarnant - 23-11-2011

Preview du travail d'hier et aujourd'hui
[Image: image-5946_4ECD1CB1.jpg]

Début du développement du package swing, équivalent à la librairie swing et awt de Java pour les composants graphiques. Ce package permettra d'utiliser très simplement des composants graphiques jQuery, comme les JSlider par exemple. L'importation du package swing pourra être désactivé dans le framework si le développeur ne veut pas l'utiliser.

J'avance assez lentement dans la classe Hashmap, car j'ai du mal à trouver une bonne routine de hashing pour insérer les éléments, je vais devoir aussi gérer le problème de collisions en implémentant une autre structure de données pour l'overflow. Ce sera sûrement une file avec des noeuds, du moins c'est la seule structure de données assez performante pour l'instant.

Si vous avez des questions, avis, je répondrai bien volontiers.


RE: [Framework] PHPRedesign - srm - 23-11-2011

Ma foi c'est un travail intéressant pour la théorie Smile


RE: [Framework] PHPRedesign - qwarnant - 23-11-2011

Merci !

Travail de ce soir
[Image: 1136743037.png]

Utilisation des composants swing :
Code PHP :
<?php 
Util
::import('swing');
Util::import('swing.jslider');
Util::import('swing.dialogbox');

/** L'objet JSlider comporte plusieurs constructeurs */
$jslider = new JSlider(new String(JSlider::HORIZONTAL), new Int(100), new Int(200), new Int(170));
$body .= $jslider->paint();

/** DialogBox de base */
$dialog = new Dialog(new String('Dialog testing'), new String('Ceci est un test blabla'));
$body .= $dialog->paint();

/** DialogBox spécialisée : animée (cette classe étend la classe précédente */
$animatedDialog = new AnimatedDialog(new String('Dialog testing'), new String('Ceci est un test blabla'), new String('Ouvrir'));
$body .= $animatedDialog->paint();

echo
$body;

J'attends vos commentaires.


RE: [Framework] PHPRedesign - Angelblade - 23-11-2011

C'est php qui génére les boîtes de dialogue javascript?

C'est pas dans mes habitudes mais pourquoi pas.


RE: [Framework] PHPRedesign - qwarnant - 24-11-2011

Oui, c'est cela, c'est géré comme un objet avec toute une série de méthodes dessus, plusieurs constructeurs, ...

Autres exemples :
Code PHP :
<?php 
$modalDialog
= new JModalDialog(new String('Dialog testing'), new String('Ceci est un test blabla'));
$body .= $modalDialog->paint();

$modalConfDialog = new JModalConfirmDialog(new String('Dialog testing'), new String('Ceci est un test blabla'),
new
Int(200), new String('Accepter'), new String('Refuser'));
$body .= $modalConfDialog->paint();

$modalMsgDialog = new JModalMsgDialog(new String('Dialog testing'), new String('Ceci est un test blabla'), new String('Accepter'));
$body .= $modalMsgDialog->paint();

$jprogressbar = new JProgressbar(new Int(30));
$body .= $jprogressbar->paint();



RE: [Framework] PHPRedesign - Sephi-Chan - 24-11-2011

(23-11-2011, 11:22 PM)Angelblade a écrit : C'est php qui génére les boîtes de dialogue javascript?

C'est pas dans mes habitudes mais pourquoi pas.

Le langage côté serveur peut très bien créer un élément HTML neutre et invisible qui seront utilisées par Javascript.
Bootstrap et jQuery UJS le font et c'est vraiment sympa à utiliser.
Après, je ne sais pas ce que Quent va faire : si le fragment génère du Javascript, là par contre c'est la loose.


Concernant le projet, c'est intéressant pour l'aspect didactique, mais je n'en vois pas bien l'intérêt pour un usage réel.
Je pense qu'il vaut mieux utiliser un bon langage que d'en surcoucher un mauvais, non ?





RE: [Framework] PHPRedesign - srm - 24-11-2011

Exactement Sephi-Chan, c'est pour ça que je l'invite à regarder du côté du Scala, ou alors de rester sur Java Smile