| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
PHP5-example-1neon 26.08.03 18:49 PHP5:n olio-ohjelmoinnin esittelyä, osa 1
<?php /* * Pieni esimerkki PHP5:n uusista olio-ohjelmointiin liittyvistä ominaisuuksista. ( OSA-1 ) * (C) neon@neon-line.net 2003 * julkaistu BSD-lisenssin alla * * HUOMAA: kyseinen koodi ei itsessään tee yhtään mitään, vaan on puhtaasti esimerkki. * * Luodaan kantaluokka, joka sisältää virheenkäsittelyn ja kaiken muun toiminnallisuuden, paitsi ulkoasun käsittelyn. * Ulkoasuun liittyvät funktion määritellään abstrakteiksi, joka pakottaa laajennusluokan määrittelemään ne. * Muut funktiot ovat lopullisia ja suojattuja */ abstract class BaseClass { /* suojattu muuttuja var */ protected $var; /* suojattu muuttuja var2 */ protected $var2; /* lopullinen julkinen funktio main */ public final function main() { /* virheenkeräys osio alkaa */ try { $this->getSomeInformation(); foreach($this->var $this->var2) { if($this->var2 === false) throw new Exception("uhh.. got false"); /* "heitetään" virhe käsittejälle */ $this->function1(); $this->function2(); } } /* virheiden käsittely */ catch(Exception $exeption) { /* käsitellään virheet * Huomaa, että virheitä ei ole pakko "heittää" throw:in avulla, vaan myös normaalit funktiot kuten * fopen() jne. luovat niitä. Tarkoituksena on vain keskittää KAIKKIEN virheiden käsittely yhteen paikkaan * ja näin helpottaa ohjelmointia ja koodin luettavuutta. */ } } /* suojattu lopullinen funktio getsomeinformation */ protected final function getSomeIntormation() { $this->var = array(); } /* abstraktit eli määrittelemättömät funktiot function1 ja function2 */ protected abstract function function1(); protected abstract function function2(); } /* * InterfaceClass määrittelee ja jatkaa luokkaa BaseClass. */ class InterfaceClass extends BaseClass { /* määritellään (ennen) abstraktit funktiot function1() ja function2() */ protected function function1() { echo $this->var2; } protected function function2() { echo $this->var2; } } /* * Käytännön sovelluksia yllä olevalle rakenteelle voi olla esimerkiksi uutisointijärjestelmä, jossa tarvitaan XML,HTML sekä PDF * käyttöliittymä. Kantaluokassa määritellään kaikki toiminnallisuus ja lapsiluokassa määritellään vain ulosantiin liittyvät * ominaisuudet. */ ?> ane 19:01 26.8.03 Voi helv, PHP5 menee liian javamaiseksi :( Akiro 20:02 26.8.03 EI niitä uusia ominaisuuksia ole mikään pakko käyttää, mutta jos teet OO:ta PHP:llä noi uudet jutut auttaa kummasti. Jani_K 23:17 27.8.03 pelottavaa on, vittu lisää monimutkasuuksia ja paskaa, niinkun niitä ei olisi jo aiemmasta :'/ Perttu Pulkkinen 01:19 28.8.03 Ei vaan hyvä, että olio-ohjelmointimahdolliuudet paranevat. Ei vaikuttane vanhoihin koodeihin mitenkään. empty 18:34 28.8.03 Millos seuraava osa tulee? verpamil 10:50 29.8.03 Niin! Milloin seuraava osa tulee?? neon 17:27 29.8.03 Silloin kun se on valmis. Ehkä huomenna, ehkä ei koskaan. jjlaine 14:07 30.8.03 Ihan kiva että php lähestyy javaa. Mutta mitä hyötyä siitä on kun saman tekee javalla 10 kertaa helpommin. Runoltaja 17:22 1.9.03 Kiva että php lähestyy javaa... mutta ominaisuuksia ei ole pakko käyttää, kuin taas javalla toisinpäin ei taida onnistua. "haukka pystyy lentämään myös matalalalla, kana ei koskaan korkealla" jp- 13:50 21.5.04 Voi itku teitä, ei niitä olio-ohjelmoinnin hyötyjä tarvitse käyttää. Voi sitä vetää siihen samaan proceduraaliseen malliin kuin ennenkin. PHP5 myötä PHP ottaa taas askeleen "oikeaa kieltä" kohti. Olio-ohjelmointi pitäs kyllä jokaisen itseään kunnioittavan koodarin opetella edes jollain tasolla. renni 13:22 14.7.04 Ah, PHP alklaa näyttää käyttökelpoiselta. Aika paljon ideoita tosiaan viitoseen pöllitty suoraan Javasta. Hyvä niin. |
![]() Haku
|