Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    15

    Avvicinamento alle classi

    Ciao ragazzi, ho bisogno di aiuto con le classi. Io ho sempre programmato senza in php4; ora sono stato fermo più di un anno e mi sto riavvicinando alla programmazione e di conseguenza al php5 che è molto più orientato alle classi. Ho letto molti articoli anche su questo sito sulle classi, qualcosina ho capito ma nn mi entra proprio in testa come usarle... comincio a pensare di essere idiota (e voi direiete, hai ragione! :P).

    Quindi ho pensato che magari postando delle mie funzioni potreste spiegarmi come "convertire" il tutto in una classe e farmi vedere come utilizzarlo poi.

    I contenuti in sé sono scarni perché è solo un esempio ma si capisce (credo) cosa ne esce fuori.

    ho una funziona che si chiama outputpage che prende un template e rimpiazza le varie parti:

    Codice PHP:
    function outputpage($titolo,$stile,$header,$navisx,$navidx,$central,$footer,$jc=null,$tpl="page0"){//costruzione ouput pagina
    //$tpl implementato in anticipo per usare layout differenti in caso
    ob_start(); 
    include(
    'tpl/'.$tpl.'.tpl'); 
    $pagina ob_get_clean(); 

    $pagina =str_replace("{titolo}",$titolo,$pagina);//titolo nel browser
    $pagina =str_replace("{stile}",$stile,$pagina);//stile della pagina che può cambiare
    $pagina =str_replace("{evenjc}",$jc,$pagina);//nel caso in cui ci siano stati js o altro da inserire nell <head></head>
    $pagina =str_replace("{header}",$header,$pagina);//pezzo superiore, titolo della pagina
    $pagina =str_replace("{navisx}",$navisx,$pagina);//navigazione sx
    $pagina =str_replace("{navidx}",$navidx,$pagina);//navi dx
    $pagina =str_replace("{central}",$central,$pagina);//copro centrale del testo
    $pagina =str_replace("{footer}",$footer,$pagina);//piè di pagina

    return $pagina;


    L'utilizzo è:
    Codice PHP:
    $pagetit="Home";
    //etc etc
    echo outputpage($pagetit,$stile,$header,$navi,$navi2,$cent,$footer); 

    Per definire le varie variabili uso alcune funzioni che le costruiscono, una che racchiude il tutto:

    Codice PHP:
    }function pezziPage($header,$navsx=null,$navdx=null){//mettiamo tutti i pezzi in un array pronti per l'output
    $arrpz=array();
    $arrpz['header']=headpage($header);//"titolo" della pagina, ci andrà anche altra roba
    $arrpz['navisx']=navisxpage($navsx);//colonna navigazione a sx
    $arrpz['navidx']=navidxpage($navdx);//colonna navigazione a dx
    $arrpz['footer']=footpage();//piè di pagina

    return $arrpz;

    E le varie funzioni che richiamo:

    Codice PHP:
    function headpage($input){//costruiamo il pezzo superiore della pagina
    $output="<h1>".$input."</h1>";

    return 
    $output;
    }

    function 
    navisxpage($input){//costruiamo la nav sinistra
    //$input lo useremo più avanti
    $output='[url=""]Link[/url]</br>[url=""]Altro Link[/url]</br>[url=""]Altro Link[/url]</br>[url=""]Altro Link[/url]</br>[url=""]Altro Link[/url]</br>[url=""]Altro Link[/url]</br>[url=""]Altro Link[/url]</br>';

    return 
    $output;
    }

    function 
    navidxpage($input){//costruiamo la nav destra
    //$input lo useremo più avanti
    $output='[url=""]Linkdx[/url]</br>[url=""]Altro Linkdx[/url]</br>[url=""]Altro Linkdx[/url]</br>[url=""]Altro Linkdx[/url]</br>[url=""]Altro Linkdx[/url]</br>[url=""]Altro Linkdx[/url]</br>[url=""]Altro Linkdx[/url]</br>';

    return 
    $output;
    }

    function 
    footpage(){//costruiamo il piè di pagina
    $output="<h5>questo è il piè di pagina</h5>";

    return 
    $output;


    Quindi nella pagina dell'output avrò una cosa del genere:

    Codice PHP:
    $pagetit="Home";
    $stile=$_SESSION['css'];
    $page=pezziPage("Un titolo formattato che cambierà");
    $header=$page['header'];
    $navi=$page['navisx'];
    $navi2=$page['navidx'];
    $footer=$page['footer'];
    $cent=headpage("Ciao mondo");
    echo 
    outputpage($pagetit,$stile,$header,$navi,$navi2,$cent,$footer); 

    Se tutto ciò volessi farlo con una classe unica sarebbe possibile? So che lo è ma nn capisco come mettere tutto in una classe unica e soprattutto come richiamare l'oggetto per farmi restituire quello ceh voglio...

    Se qualcuno mi fa la classe di quello che ho postato sopra forse mi aiuterebbe a capire (sicuramente la comparazione di due esempi uno funzioni solo e una classe mi aiuterà).

    Grazie in anticipo!

    PS: Scusate se è così lungo il post

  2. #2
    Diciamo che per semplificare la faccenda una classe rappresenta un oggetto (astratto) con delle proprietà (attributi) e delle funzionalità (metodi); il tutto per esprimere un concetto "completo".

    Ad esempio una "persona" può essere vista come una classe che ha per proprietà: il sesso, la data di nascita e altre caratteristiche che appunto la caratterizzano e come funzionalità quella di parlare, camminare, etc.

    Nel tuo caso credo che possiamo dire che il concetto che stai cercando di rappresentare è una generica pagina web; questa pagina avrà come attributi buona parte degli elementi che passi alle varie funzioni che hai postato e che avrà come metodi alcune delle funzioni che tu stesso hai già scritto...ovviamente il tutto re-ingegnerizzato per essere coerente e sistemato.

    Ad esempio (una classe con compatibilità sia php4 che php5):
    Codice PHP:
    class Page
    {
       
    // Le variabili che ci servono
       
    var $titolo;
       var 
    $stile;
       ...
       var 
    $xxx;

       
    // Il costruttore della nostra classe
       
    function Page($impostazioni "")
       {
          if ( isset(
    $impostazioni) && is_array($impostazioni) ) {
              
    $this->titolo $impostazioni['titolo'];  //ovviamente ci vogliono più controlli
          
    }
       }

       function 
    output($tpl)
       {
           
    ob_start();
           include(
    'tpl/'.$tpl.'.tpl');
           
    $pagina ob_get_clean();

           
    $pagina =str_replace("{titolo}",$this->titolo,$pagina);//titolo nel browser
           
    $pagina =str_replace("{stile}",$this->stile,$pagina);//stile della pagina che può cambiare
           
    $pagina =str_replace("{evenjc}",$this->jc,$pagina);//nel caso in cui ci siano stati js o altro da inserire nell <head></head>
           
    $pagina =str_replace("{header}",$this->header,$pagina);//pezzo superiore, titolo della pagina
           
    $pagina =str_replace("{navisx}",$this->navisx,$pagina);//navigazione sx
           
    $pagina =str_replace("{navidx}",$this->navidx,$pagina);//navi dx
           
    $pagina =str_replace("{central}",$this->central,$pagina);//copro centrale del testo
           
    $pagina =str_replace("{footer}",$this->footer,$pagina);//piè di pagina

           
    return $pagina
       }

       
    // altre funzioni


    questo è un esempio banale ed anche "scorretto" ma è solo per farti capire cosa può essere una classe.

    Ovivo che può essere tante altre cose, un insieme di funzionalità appartenenti ad una stessa famiglia e non solo una rappresentazione astratta di un oggetto "interessante".
    Administrator of NAMDesign.Net

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    15
    Si ma poi per usarle dentro allo script? Cioé la funzione "ciao(var1,var2)" la uso semplicmente chiamandola ciao($var,$var2). La classe nn capisco come fa....

    Mi sa che nn fanno molto per me o al momento nn sono abbastanza lucido per apprendere un modo nuovo di vedere la programmazione da quella a cui sono abituato boh....

  4. #4
    una volta che hai creato la classe ti basterà fare:
    Codice PHP:
    // Crei una istanza della classe Page
    $page = new Page(...);

    // Utilizzi i suoi metodi
    $output1 $page->output(..1..);
    $output2 $page->output(..2..);
    $output3 $page->output(..3..); 
    Administrator of NAMDesign.Net

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.