예제 #1
0
 /**
  * Lisää määrite-taulukkoon määritteen niin, että jos kyseinen määrite
  * siellä jo on, sen arvo muutetaan. Muuten lisätään uusi määrite.
  * Palauttaa määritetaulukon.
  * 
  * <p>Ellei määrite-taulukko ole määritelty taulukko, luodaan sen sijaan
  * uusi tyhjä taulukko.</p>
  * 
  * <p>Ellei $uusi ole Maarite-luokan olio, ei tehdä mitään!</p>
  * 
  * <p>Jos määrite on parametrillinen js-metodi (onclick, 
  * onmouseover tms.) muutetaan mahdollisesta jo olemassaolevasta 
  * määritteestä arvon (metodin nimen) lisäksi myös metodin parametrit
  * (taulukko).</p>
  * 
  * <p>HUOM! $maarite_array-parametrin edessä & -> muutokset siirtyvät 
  * suoraan taulukkoon.</p>
  * 
  * @param Attr $uusi
  * @param type $maarite_array
  * @return type array Palauttaa muokatun $maarite_array-taulukon.
  */
 static function lisaa_maarite($uusi, &$maarite_array)
 {
     $koodi = Attr::$EI_LOYTYNYT;
     if ($uusi instanceof Attr) {
         // is_array palauttaa falsen, jos parametri null.
         if (!is_array($maarite_array)) {
             $maarite_array = array();
         } else {
             foreach ($maarite_array as $maariteolio) {
                 if ($maariteolio instanceof Attr) {
                     // Jos määrite löytyi, muutetaan sitä:
                     if ($maariteolio->get_nimi() == $uusi->get_nimi()) {
                         // muutetaan arvo:
                         $maariteolio->set_arvo($uusi->get_arvo());
                         // JS-tapauksessa myös parametrit:
                         if ($uusi->on_js_metodi() && $maariteolio->on_js_metodi()) {
                             $maariteolio->set_js_parametrit($uusi->get_js_parametrit());
                         }
                         $koodi = "loytyipa";
                     }
                 }
             }
         }
         // Liitetään uusi taulukkoon, ellei löytynyt.
         if ($koodi === Attr::$EI_LOYTYNYT) {
             // Lisätään määrite taulukkoon:
             array_push($maarite_array, $uusi);
         }
     }
     return $maarite_array;
 }