Visualizzazione dei risultati da 1 a 5 su 5

Discussione: problema classi

  1. #1

    problema classi

    Ciao. Mi rivolgo a voi per un problema OOP (sul PHP nn ce n'è molti che lavorano con le GUI...). Per voi invece è pane quotidiano.

    Nelle classi per PHP-GTK mi viene eseguita solo la prima operazione matematica, le successive no!!

    ESEMPIO Per spiegare il problema che mi affligge:

    class.php
    Codice PHP:
    <?
    //SUPERCLASSE
    class Geo{
    var 
    $dt;//da specificare nella classe
    var $Ht;//da specificare nella classe
    var $Hm;//da specificare nella classe
    var $Ho;//passata in argomento al costruttore
    var $L//passata in argomento al costruttore
    var $lb;//passata in argomento al costruttore
    var $dl;//passata in argomento al costruttore
    var $nm;//passata in argomento al costruttore
        
    function Geo($Ho,$L,$lb,$dl,$nm){
            
    $dt $L/2-$lb-$nm*$dl;//questa viene elaborata
            
    $Ht $Ho-0.10*$dt;//questa no
            
    $Hm $Ht+0.10*$L/2;//questa no
            
    $this->Ho $Ho;
            
    $this->$L;
            
    $this->lb $lb;
            
    $this->dl $dl;
            
    $this->nm $nm;
            
    $this->dt $dt;
            
    $this->Ht $Ht;
            
    $this->Hm $Hm;
        }

        function 
    stampa(){
            echo 
    "Dati Input"."\n";
            echo 
    $this->Ho."\n";
            echo 
    $this->L."\n";
            echo 
    $this->lb."\n";
            echo 
    $this->dl."\n";
            echo 
    $this->nm."\n";
            echo 
    "Elaborazioni"."\n";
            echo 
    $this->dt."\n";
            echo 
    $this->Ht."\n";
            echo 
    $this->Hm."\n";
        }
    };
    //END GEO
    ?>
    operazione.php

    Codice PHP:
    <?
    if (!class_exists('gtk')) {
        if (
    strtoupper(substr(PHP_OS0,3) == 'WIN'))
        
    dl('php_gtk.dll');
      else
        
    dl('php_gtk.so');
    }

    require_once(
    'class.php');

    //*****INTERFACCIA*****
    //WINDOW
    $window = &new GtkWindow();
    $window->connect('destroy''destroy');
    $window->set_title("Directory");
    //VBOX
    $vbox = &new GtkVBox();
    //SERIE ENTRY & BUTTON
            
    $Ho0 = &new GtkEntry();
            
    $Ho0->set_text(87);
            
    $Ho0->set_max_length(10);
            
    $Ho0->set_usize(35,0);
            
    $Ho0->show();
    $vbox->pack_start($Ho0,true,true,5);
            
    $L0 = &new GtkEntry();
            
    $L0->set_text(2000);
            
    $L0->set_max_length(10);
            
    $L0->set_usize(35,0);
            
    $L0->show();
    $vbox->pack_start($L0,true,true,5);
            
    $lb0 = &new GtkEntry();
            
    $lb0->set_text(855);
            
    $lb0->set_max_length(10);
            
    $lb0->set_usize(35,0);
            
    $lb0->show();
    $vbox->pack_start($lb0,true,true,5);
            
    $dl0 = &new GtkEntry();
            
    $dl0->set_text(100);
            
    $dl0->set_max_length(10);
            
    $dl0->set_usize(35,0);
            
    $dl0->show();
    $vbox->pack_start($dl0,true,true,5);
            
    $nm0 = &new GtkEntry();
            
    $nm0->set_text(1);
            
    $nm0->set_max_length(10);
            
    $nm0->set_usize(35,0);
            
    $nm0->show();
    $vbox->pack_start($nm0,true,true,5);
            
    $button = &new GtkButton("Click");
            
    $button->connect('clicked','calcola');
            
    $button->set_usize(105,0);
            
    $button->show();
    $vbox->pack_start($button,true,true,0);
            
    $button = &new GtkButton("Exit");
            
    $button->connect('clicked','destroy');
            
    $button->set_usize(105,0);
            
    $button->show();
    $vbox->pack_start($button,true,true,0);
    //ADD VBOX
    $window->add($vbox);
    $vbox->show();
    //show_all
    $window->show();
    //END WINDOW & INTERFACCIA



    //*****GESTIONE EVENTI*****

    function destroy(){
        print 
    "Quit Directory";
        
    Gtk::main_quit();
    }



    function 
    calcola(){
             global 
    $L0;
             global 
    $Ho0;
             global 
    $lb0;
             global 
    $dl0;
             global 
    $nm0;
    $L $L0->get_text();
    $Ho $Ho0->get_text();
    $lb $lb0->get_text();
    $dl $dl0->get_text();
    $nm $nm0->get_text();

    $istanza = &new Geo($Ho,$L,$lb,$dl,$nm);
    $istanza->stampa();

    $L0 ->set_text($L); //resetta l'ultima variabile dichiarazione di $L
    $Ho0 ->set_text($Ho);
    $lb0 ->set_text($lb);
    $dl0 ->set_text($dl);
    $nm0 ->set_text($nm);
    }


    //avvia il loop principale
    gtk::main();
    ?>
    Ma xkè ogn volta che converto uno script già completo e funzionate da PHP Server a PHP-GTK mi imbatto in mille problemi???
    Possibile che PHP-GTK gestisca tutto in modo assolutamente opposto a PHP lato Server?

    E' un problema solo del PHP-GTK che nn è ancora ottimizzato per la OOP?Sbaglio io qualcosa? In C++ si incontra un tal problema? Prima o poi dovrò passare a qualche linguaggio classico, magari proprio C++, così almeno c'è maggiore documentazione!

  2. #2
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    La versione 5 di php introduce una notevole serie di potenziamenti all'OOP, prova a dargli un'occhiata.
    ChReAn
    -------------------

    Slackware 9.1 powered

  3. #3
    E' tutta colpa del punto decimale!!!
    Infatti se invece di

    $dt = $L/2-$lb-$nm*$dl;
    $Ht = $Ho-0.10*$dt;
    $Hm = $Ht+0.10*$L/2;

    Faccio cosìke per i calcoli è la stessa cosa!)

    $dt = $L/2-$lb-$nm*$dl;
    $Ht = $Ho-$dt/10;
    $Hm = $Ht+($L/2)/10;

    Bisogna FORZARE il tipo di dati?
    In c esistono problemi del genere con le classi?

  4. #4
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    Che io sappia, php non e' tipizzato.
    Non ho mai provato a usare costanti decimali in php e quindi non saprei dirti se sia quello il problema.
    In altri linguaggi il problema non si pone, da Java a C++ puoi usare senza fastidio il punto decimale nei calcoli.

    ChReAn
    -------------------

    Slackware 9.1 powered

  5. #5
    Innanzitutto Grazie ChReAn sei l'unico che mi degna di risposte!

    A quanto capisco tu usi sia PHP che C++ che Java, bene, bene.

    Per curiosità, puoi copiarti il codice del mio script (ti ricordo che sono due file: class.php e operazione.php) e provarlo? Spero tu abbia anche PHP-GTK...

    A proposito di linguaggi INTERPRETATI-COMPILATI-PSEUDOCOMPILATI, ti segnalo questo 3d sperando tu possa dare delucidazioni.

    http://forum.html.it/forum/showthrea...5&pagenumber=6

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 © 2024 vBulletin Solutions, Inc. All rights reserved.