/** * 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; }