Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1

    [PHP-OOP] Aiuto su programmazione a oggetti

    vorrei passare a OOP.
    ho però qualche problema.
    ho creato un classico file per la connessione:
    Codice PHP:
    <?php

    define
    ('HOST''');
    define('UTENTE''');
    define('PASS''');
    define('DB''');

    class 
    Connection {

        function 
    __construct() {
            
    $conn mysql_connect(HOSTUTENTEPASS) or die('Errore nella connessione' mysql_error());
            
    $db mysql_select_db(DB) or die('Errore nella connessione' mysql_error());
        }

    }
    a questo punto vorrei creare una classe che effettua la select, ma nn riesco a capire come dovrei fare.
    ottengo sempre errori:
    Codice PHP:
    <?php

    include_once 'config.php';

    class 
    Select {
        
    $connessione = new Connection();

    }
    questo l'errore che comparirebbe se visualizzassi la pagina nel browser:
    Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /web/htdocs/www.sito.it/home/email/select.php on line 6

  2. #2
    fermat, visto che stai iniziando con uno dei problemi più complessi nell'oop, prova a vedere in giro se trovi qualcosa già "fatto e spiegato", anche perchè da come hai scritto quelle due classi capisco che è tipo la prima volta che ti cimenti in questo ambito...

    ad esempio, prova a dare una letta qui:

    http://www.tonymarston.net/php-mysql...seobjects.html

    è proprio terra terra, codice un pò rozzo, ma (come dice anche l'autore) come esempio è abbastanza ben fatto per farti capire più o meno com'è la strada.
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    contro ordine, l'esempio di prima è una ciofeca, meglio quà:

    http://www.devshed.com/c/a/PHP/Build...ccess-Objects/
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  4. #4
    ok guardo e provo a fare qualcosa.
    grazie!

  5. #5
    Originariamente inviato da Santino83_02
    contro ordine, l'esempio di prima è una ciofeca, meglio quà:

    http://www.devshed.com/c/a/PHP/Build...ccess-Objects/
    Anche questo non e' sto granche' eh. L'articolo e' vecchio di 6 anni, usa l'obsoleta sintassi OOP di PHP4 e il codice sembra scritto da un gorilla ubriaco a cui hanno tolto barra spaziatrice e tab.

    Il fatto e' che nel codice postato sopra ci sono diversi errori concettuali, prima ancora che di sintassi.

    Innanzitutto uno dei concetti fondamentali della programmazione OO e' l'encapsulation (cioe' racchiudere nella classe tutte le informazioni che ne fanno parte) quindi come prima cosa non ha senso definire delle costanti AL DI FUORI della classe: usa costanti di classe.

    Poi non devi creare una classe per ogni azione, una classe rappresenta un oggetto e questo oggetto deve racchiudere tutte le proprieta' e le azioni che ha senso che faccia. Quindi se tu devi creare un'interfaccia per un database, e' logico pensare che la classe che crei vada a rappresentare il database, ed abbia quindi proprieta' come host, utente, password e metodi (funzioni) che permettano di interagire con esso. In breve una select deve essere un metodo della classe database, non una classe a se'.

    Probabilmente la cosa migliore da fare e' cercare un libro che ti introduca alle basi della programmazione OO in PHP, senno' guardando solo codice gia' fatto senza conoscere i concetti farai molta fatica a comprendere l'insieme.

  6. #6
    un pò di OOP la conosco usando java e c#.
    quello che mi complica un pò è il modo diverso in cui è implementato in php.
    cmq ho messo config.php così:
    Codice PHP:
    <?php

    class Config {

        private 
    $host;
        private 
    $user;
        private 
    $pass;
        private 
    $db;

        public function 
    __construct() {
            
    $this->host '';
            
    $this->user '';
            
    $this->pass '';
            
    $this->db '';
        }

        public function 
    getHost() {
            return 
    $this->host;
        }

        public function 
    getUser() {
            return 
    $this->user;
        }

        public function 
    getPass() {
            return 
    $this->pass;
        }

        public function 
    getDb() {
            return 
    $this->db;
        }

        public function 
    getConnection() {
            
    $conn mysql_connect() or die('Errore nella connessione' mysql_error());
            
    $db mysql_select_db() or die('Errore nella connessione' mysql_error());
        }

        public function 
    select() {
            
    $query mysql_query("SELECT * FROM dbemail");
            
    $result mysql_fetch_assoc($query);
        }

    }
    il mio problema principale qua è reindirizzare l'output (sempre se ho fatto giusto).

  7. #7
    Io credo che il posto migliore per la connessione sia dentro il constructor. A seconda delle esigenze puoi fare in modo che il constructor accetti parametri (se vuoi creare una classe di connessione generale) o scriverli direttamente come proprieta' della classe se ad esempio ti serve solo una classe di connessione ad uno specifico database.

  8. #8
    così insomma:
    Codice PHP:
    <?php

    class Config {

        private 
    $host;
        private 
    $user;
        private 
    $pass;
        private 
    $db;

        public function 
    __construct() {
            
    $this->host '';
            
    $this->user '';
            
    $this->pass '';
            
    $this->db '';

            
    $conn mysql_connect($this->host$this->user$this->pass) or die('Errore nella connessione' mysql_error());
            
    $db mysql_select_db($this->db) or die('Errore nella connessione' mysql_error());
        }

        public function 
    getHost() {
            return 
    $this->host;
        }

        public function 
    getUser() {
            return 
    $this->user;
        }

        public function 
    getPass() {
            return 
    $this->pass;
        }

        public function 
    getDb() {
            return 
    $this->db;
        }

        public function 
    select() {
            
    $query mysql_query("SELECT * FROM dbemail");
            
    $result mysql_fetch_assoc($query);
        }

    }
    però mi rimane cmq il problema dell'output.
    come faccio a reindirizzarlo verso, ad esempio, index.php?

  9. #9
    Scusa ma perche' nel constructor assegni a tutto stringhe vuote?
    Non capisco il problema dell'output: crei un metodo che restituisce qualche struttura dati a seconda di quello che ti serve (array di array, array di oggetti, etc.) e nella pagina in cui richiami quel metodo stampi cio' che ti ha restituito.

  10. #10
    Originariamente inviato da k.b
    Scusa ma perche' nel constructor assegni a tutto stringhe vuote?
    Non capisco il problema dell'output: crei un metodo che restituisce qualche struttura dati a seconda di quello che ti serve (array di array, array di oggetti, etc.) e nella pagina in cui richiami quel metodo stampi cio' che ti ha restituito.
    i parametri sono vuoti perchè sono quelli del mio spazio aruba e nn mi andava di renderli pubblici....
    cmq dici qualcosa del genere?:
    Codice PHP:
        public function select() {
            
    $query mysql_query("SELECT * FROM dbemail");
            
    $result mysql_fetch_assoc($query);
            return 
    $result;
        } 
    e poi in index:
    Codice PHP:
    <?php
    include_once 'config.php';
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Email DB</title>
        </head>
        <body>
            <?php
            $select 
    = new Config();
            
    $result $select->select();
            while (
    $riga mysql_fetch_assoc($result)) {
                echo 
    '<div>';
                echo 
    '

    $riga['nome'] . '</p>
    '
    ;
                echo 
    '

    $riga['cognome'] . '</p>
    '
    ;
                echo 
    '</div>';
            }
            
    ?>
        </body>
    </html>

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.