22-11-2011, 10:42 PM
(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
-> 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=urlserveurL'utilisation :
param2=nomserveur
Code PHP :
<?php
$props = new Properties();
$props->load(new FileInputStream('fichier_conf.txt'));
$param1 = $props->getProperty('param1'); //Return String
?>