Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di lnessuno
    Registrato dal
    Feb 2002
    Messaggi
    2,732

    Lavoro agilmente in php, ma con gli oggetti... come diamine si fa??

    provengo dalla programmazione funzionale, ho sempre e solo lavorato in questo modo:

    ho iniziato con asp facendo un corso di 1200 ore, me la cavavo bene e poi ho deciso di passare a php, che mi piace molto di più.

    fondamentalmente, non ho mai lavorato ad oggetti, so a malapena cosa significhi (ho letto qualche guida teorica, e forse sono anche riuscito a capire qualche passaggio qua e la).

    dopodichè ho detto beh, prendo una guida, vedo gli esempi e inizio a studiare li sopra... detto fatto, ho preso questo:

    http://php.html.it/articoli/leggi/86...tti-con-php-4/

    ho seguito passo passo tutta la guida, mi son fatto la mia paginetta e sono riuscito a capire che, copiando quello che c'è scritto li, la programmazione a oggetti funziona

    il problema sorge quando ho provato a fare qualcosa io. riporto qua il codice per comodità:

    Codice PHP:
    class essereVivente{
        var 
    $specie;
        var 
    $ambiente;
        function 
    essereVivente($specie,$ambiente){
            
    $this->specie $specie;
            
    $this->ambiente $ambiente;
        }
        function 
    muori(){
            echo 
    "se continueranno a morire esseri della mia specie (".$this->specie.") ci estingueremo\n";
        }
        function 
    doveVivo(){
            echo 
    "vivo in".$this->ambiente;
        }
    }

    class 
    animale extends essereVivente{
        var 
    $peso;
        var 
    $altezza;
        var 
    $gasRespirato "ossigeno";
        var 
    $arti;
        function 
    animale($specie,$ambiente,$peso,$altezza,$arti){
            
    $this->essereVivente($specie,$ambiente);
            
    $this->specie $specie;
            
    $this->peso $peso;
            
    $this->altezza $altezza;
            
    $this->arti $arti;
            echo 
    "Sono nato!!";
        }
        function 
    respira(){
            echo 
    "Sono un essere vivente, e stò respirando ".$this->gasRespirato;
        }
        function 
    salta($spazio){
            if(
    $this->altezza $spazio){
                echo 
    "Ho saltato ".$spazio." metri";
            }else{
                echo 
    "Al massimo posso saltare ".($this->altezza*5)." metri!";
            }
        }
    }

    class 
    essereUmano extends animale{
        var 
    $lingua;
        var 
    $sport;
        var 
    $nome;
        var 
    $eta;
        var 
    $sesso;
        function 
    essereUmano($nome,$sesso,$ambiente,$peso,$altezza,$eta,$lingua,$sport){
            
    $this->animale("Essere umano",$ambiente,$peso,$altezza,4);
            
    $this->lingua $lingua;
            
    $this->eta $eta;
            
    $this->sport $sport;
            
    $this->nome $nome;
            
    $this->sesso $sesso;
        }
        function 
    guida(){
            if(
    $this->eta 18){
                echo 
    "Non sono neanche maggiorenne, come posso guidare??";
            }else{
                echo 
    "Segno della croce e via!!Anche se non ho ancora preso la patente!";
            }
        }
        function 
    parla($frase){
            echo 
    $frase."\nSe vuoi te la dirò anche in ".$this->lingua;
        }
    }

    class 
    donna extends essereUmano{
        function 
    donna($nome,$ambiente,$altezza,$lingua){
            
    $this->essereUmano($nome,"femmina",$ambiente,"fruscello",$altezza,"una giovincella",$lingua,"nessuno");
        }
        function 
    guida(){
            echo 
    "3 morti e 15 feriti...";
        }
        function 
    pensa(){
            echo 
    "Scusa?Che hai detto??";
        }
        function 
    maQuantiAnniHai(){
            echo 
    $this->eta;
        }
    }

    class 
    uomo extends essereUmano{
        function 
    uomo($nome,$ambiente,$peso,$altezza,$eta,$lingua,$sport){
            
    $this->essereUmano($nome,"maschio",$ambiente,$peso,$altezza,$eta,$lingua,$sport);
        }
        function 
    pensa(){
            echo 
    "Sono troppo un genio, che penso a fare??";
        }
        function 
    gioca(){
            echo 
    "Stò già giocando a ".$this->sport." !";
        }
    }

    $io = new uomo ("ToX""cuneo""70""1.86""25""Italiano""curling acrobatico");
    $io->gioca(); 

    tutto bene... mi dice che sono nato, e che faccio curling acrobatico... ma se cambiassi idea, e invece che curling acrobatico voglio dirgli che invece gioco a tennis subaqueo?
    inoltre, come faccio a specificare che ho 5 arti? (sia impostare il valore che recuperarlo)

    ancora una cosa... nella funzione pensa() dell'uomo, se volessi fargli stampare "ToX è troppo un genio, che pensa a fare??" come faccio?



    in alternativa, avete qualche guida esaustiva su come iniziare a programmare ad oggetti in php5, possibilmente in italiano (non necessario ma preferibile)?


    grazie

  2. #2
    Utente di HTML.it L'avatar di M4rko
    Registrato dal
    Dec 2000
    Messaggi
    619
    In php4 puoi accedere (selvaggiamente) alle variabili del tuo oggetto come e quando ti pare:
    codice:
    $uomo->sport = "tennis subacqueo";
    $uomo->arti = 5;
    solitamente è buona cosa preparare, all'interno della tua classe, un certo numero di metodi cosiddetti setter e getter, del tipo:
    codice:
    // setter per lo sport
    function setSport($value) {
        $this->sport = $value;
    }
    // getter per lo sport
    function getSport() {
        return $this->sport;
    }
    per cui quando hai bisogno di recuperare il valore dello sport utilizzi getSport(), mentre quando vuoi impostarne uno nuovo utilizzi setSport("valore"). Nella stessa funzione setSport() eventualmente inserirai dei controlli "di sicurezza" a seconda del tipo di dato che stai trattando (se stai settando l'anno di nascita, ti aspetti un numero - probabilmente a 4 cifre - che non sia maggiore dell'anno in corso, giusto per fare un esempio)

    Questa tecnica ti mette concettualmente in linea con quello che hai in php5 e in altri linguaggi ad oggetti, ossia la visibilità di metodi/attributi, che nella pratica si traduce con l'uso delle parole chiave private (metodi e attributi visibili solo all'interno della classe), public (visibili da tutti) o protected (visibili solo da classi che ereditano).

    In rete trovi millemila esempi di programmazione ad oggetti (spesso con riferimenti a java o c++, ma i concetti di base li puoi utilizzare comunque).
    Un buon librone in inglese (a gratis) è "PHP5 power programming", lo trovi qui:
    http://www.informit.com/promotions/p...3&redir=1&rl=1
    (lo puoi acquistare o scaricare in PDF, è un openbook della serie di Bruce Perens)

    Poi si tratta soprattutto di leggere codice (altrui) e scrivere codice, finche non ti viene naturale
    Tutti hanno bisogno di credere in qualcosa.
    Io credo che mi farò un'altra birra.


  3. #3
    io sto leggendo questa guida ... è piuttosto semplice
    Disegnatori e romanzieri d'Italia, visitate il mio sito, cerchiamo favolieri dark ed illustratori dark fantasy... http://www.neilgaimania.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.