2010-12-08 23 views
1

J'ai essayé d'implémenter les fonctionnalités de base de ArrayList (Java) en PHP. L'Arraylist devrait pouvoir ajouter n'importe quel type d'objet (générique comme Java) Quelqu'un peut-il suggérer une amélioration dans la conception/implémentation? . Voici le codeImplémentation de ArrayList en PHP

<?php 
/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 

class ArrayList 
{ 

    private $arrVar; 

    function __construct($option) 
    { 
     $this->arrVar = array(); 
     array_push($this->arrVar,$option); 
    } 

    function addValue($option) 
    { 
     array_push($this->arrVar,$option); 
    } 

    function getLastValue() 
    { 
     $arr = array_pop($this->arrVar); 
     return $arr; 
    } 

} 



?> 
+2

Pourquoi ne pas utiliser des tableaux PHP normaux? Ils peuvent contenir des objets de n'importe quel type sans que vous ayez à spécifier quel type. – BoltClock

+0

besoin d'écrire des fonctions personnalisées. – Vidya

+3

array_pop supprime le dernier élément du tableau, mais vous dites: getLastValue() –

Répondre

1

Je ne sais pas si cela aide:

class MyArray { 
    private $my_array; 

    function __construct() { 
     $this->my_array = array(); 
    } 

    public function setMyArray($value) { 
     $this->my_array = $value; 
    } 

    public function getMyArray() { 
     return $this->my_array; 
    } 

    public function getLastElement() { 
     $last_elem = array_reverse($this->getMyArray()); 
     return $last_elem[0]; 
    } 
} 

$myArr = new MyArray(); 
$a[] = "Hello"; // use this instead of array_push 
$a[] = "World"; 
$myArr->setMyArray($a); 
echo "My Array:<pre>".print_r($myArr->getMyArray(),true)."</pre><br />\n"; 
echo "Last Element: ".$myArr->getLastElement()."<br />\n"; 

$a[] = "Yet another element"; 
$myArr->setMyArray($a); 
echo "My Array Again:<pre>".print_r($myArr->getMyArray(),true)."</pre><br />\n"; 
echo "Last Element Again: ".$myArr->getLastElement()."<br />\n"; 

sortie:

My Array:Array 
(
    [0] => Hello 
    [1] => World 
) 

Last Element: World 

My Array Again:Array 
(
    [0] => Hello 
    [1] => World 
    [2] => Yet another element 
) 

Last Element Again: Yet another element 
2

Votre classe ne fait vraiment rien d'autre que de restreindre les opérations que je peux effectuer sur la baie. Il est généralement préférable d'adopter les idiomes communs pour une langue particulière, plutôt que d'essayer d'obtenir la langue de ressembler à une autre langue que vous préférez.

+2

Sans mentionner qu'il ne suit ni les conventions de nommage pour ArrayList ni implémente un sous-ensemble utile minimal de ses membres. – theazureshadow