PHP5-example-1

neon 26.08.03 18:49

PHP5:n olio-ohjelmoinnin esittelyä, osa 1

 Tekstiversio  Arvo: 4 (8 ääntä)  Äänestä: +  -
<?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.