Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Estensioni di classi

  1. #1

    Estensioni di classi

    Ciao a tutti.

    Sto lavorando con la creazione di file pdf da php (con fpdf)
    Per fare determinate cose ho dovuto includere alcuni script presi direttamente da fpdf.org.

    Ora il mio codice è:
    codice:
    define('FPDF_FONTPATH','./font/');
    require ('./fpdf.php');
    
    class PDF extends FPDF
    {
    function funzione_da_fpdf()
    {...}
    function funzione2_da_fpdf()
    {...}
    
    function mia_funzione1()
    {...}
    function mia_funzione2()
    {...}
    Io invece nel mio codice non voglio vedere gli script fatti dagli altri. vorrei semplicemente includerli.
    Ho provato a cacciare tutto in un altro file (script.php) e fare
    codice:
    include('script.php')
    class PDF extends FPDF
    {.....}
    ma mi da errore dicendo che ridefinisco la PDF.
    Allora cambio in
    codice:
    include('script.php')
    class mioPDF extends FPDF
    {.....}
    e tutte le chiamate fatte a funzioni dentro script.php non vanno!

    Se poi provo in modo assassino a mettere l'include tra una mia funzione e l'altra.....il pc non mi malmena solo perchè non ha gli arti per farlo

    Come si deve fare sta inclusione?



    Ah, un'altra cosa velocissima: mi spiegate che diamine è "$this->" ?????
    Lo uso perchè altimenti non funziona niente, ma non ho mica capito cos'è! Poi se tutti i "$this->" li faccio diventare "$pippo->" non funziona niente.

  2. #2
    $this-> è un riferimento ad un attributo dell'oggetto stesso...ecco perche se ci metti $pippo non funziona

    ex:


    Codice PHP:

    class Film
    {
         private 
    $titolo;
         private 
    $regista;
         
         public function 
    __construct() {}

         public function 
    setTitolo($tit)
         {
            if (
    $tit=="") {
                
    $this->titolo="undefined";  //mi sto riferendo all'attributo titolo dell'oggetto di classe film
            
    }
            else 
    $this->titolo=$tit;
         }
         
         public function 
    getTitolo()
         {
             return 
    $this->titolo;
         }
         
         public function 
    setRegista($reg)
         {
            if (
    $reg=="") {
                
    $this->regista="undefined";
            }
            else 
    $this->regista $reg;
        }
        
        public function 
    getRegista ()
        {
            return 
    $this->regista;
        }
         

    V.I.S.T.A. --> Virus Inside, Switch To Apple

  3. #3
    ok, funzionamento di $this-> capito.
    Grazie!

    Per quando riguarda invece il problema principale? Quello dell'inclusione di classi fatte da terzi?

  4. #4
    al posto di include prova require_once....poi me lo rileggo bene ora devo uscire..ciauz
    V.I.S.T.A. --> Virus Inside, Switch To Apple

  5. #5
    Ed ecco la risposta:
    Fatal error: Call to undefined method mioPDF::drawTextBox() in /var/www/applicazione/accessi/pdf_elenco_visite.php on line 313

    e alla linea 313 non c'è altro che
    Codice PHP:
    $this->drawTextBox($motivo,50,$h,'C','M',1); 
    Ora vi posto bene bene il codice così come mi da errore

    Questo è il file che genera il .pdf
    Codice PHP:
    <?
    define
    ('FPDF_FONTPATH','./font/');
    require (
    './fpdf.php');
    require_once(
    'textbox.php');
        
    class 
    mioPDF extends FPDF
    {
     function 
    Header()
     {...}
     function 
    Footer()
     {...}
     function 
    connect()
     {...}
     function 
    ricerca()
     {...}
     function 
    intestazione_tabella()
     {...}
     function 
    corpo_tabella($query)
     {...}
    //fine della classe mioPDF

    $query="...";
    $p = new mioPDF();
    $p->AddPage(L,A4);
    $p->connect(...);
    $p->ricerca();
    $p->intestazione_tabella();
    $p->corpo_tabella($query);
    $p->output();
    ?>
    e questo è il file con dentro le funzioni fatti da altri (textbox.php)
    Codice PHP:
    <?    
    class PDF extends FPDF
    {
     function 
    drawTextBox($strText$w$h$align='L'$valign='T'$border=1)
     {...}
     function 
    drawRows($w$h$txt$border=0$align='J'$fill=0$maxline=0$prn=0)
     {...}
    //fine della classe PDF
    ?>

    Per farlo funzionare, devo tenere il codice in questo modo:
    Codice PHP:
    <?
    define
    ('FPDF_FONTPATH','./font/');
    require (
    './fpdf.php');
    //require_once('textbox.php');
        
    class mioPDF extends FPDF
    {
     function 
    drawTextBox($strText$w$h$align='L'$valign='T'$border=1)
     {...}
     function 
    drawRows($w$h$txt$border=0$align='J'$fill=0$maxline=0$prn=0)
     {...}
     function 
    Header()
     {...}
     function 
    Footer()
     {...}
     function 
    connect()
     {...}
     function 
    ricerca()
     {...}
     function 
    intestazione_tabella()
     {...}
     function 
    corpo_tabella($query)
     {...}
    //fine della classe mioPDF

    $query="...";
    $p = new mioPDF();
    $p->AddPage(L,A4);
    $p->connect(...);
    $p->ricerca();
    $p->intestazione_tabella();
    $p->corpo_tabella($query);
    $p->output();
    ?>
    in pratica incollo il codice di quell'altro nel mio file e ignoro del tutto textbox.php, il che lo rende particolarmente illegibile e inutilmente lungo.

    Detto brevissimamente: come includo nel mio codice un file contenente codice scritto da terzi che estende la stessa classe che estendo nel mio codice?

  6. #6
    up
    help pls

  7. #7
    no one?

  8. #8
    Risolto in questo modo:

    Questo è il file che genera il .pdf
    Codice PHP:
    <?
    define
    ('FPDF_FONTPATH','./font/');
    require (
    './fpdf.php');
    require(
    'textbox.php');
        
    class 
    mioPDF extends TEXTBOX
    {
     function 
    Header()
     {...}
     function 
    Footer()
     {...}
     function 
    connect()
     {...}
     function 
    ricerca()
     {...}
     function 
    intestazione_tabella()
     {...}
     function 
    corpo_tabella($query)
     {...}
    //fine della classe mioPDF

    $query="...";
    $p = new mioPDF();
    $p->AddPage(L,A4);
    $p->connect(...);
    $p->ricerca();
    $p->intestazione_tabella();
    $p->corpo_tabella($query);
    $p->output();
    ?>
    e questo è il file con dentro le funzioni fatti da altri (textbox.php)
    Codice PHP:
    <?    
    class TEXTBOX extends FPDF
    {
     function 
    drawTextBox($strText$w$h$align='L'$valign='T'$border=1)
     {...}
     function 
    drawRows($w$h$txt$border=0$align='J'$fill=0$maxline=0$prn=0)
     {...}
    //fine della classe TEXTBOX
    ?>

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.