un consiglio database class OOP

shivi

Nuovo Utente
14 Feb 2012
25
0
0
volevo chiedere per togliere il mio dubbio perchè è da poco che programmo OOP ho creato una semplice database class ma secondo voi può essere considerato abbastanza meglio una classe gestita in questo modo o non tanto c'è qualche errore grazie mille
PHP:
class phpWbDatabaseConnection {
    // Decclass variables
    private $localhost_server;
    private $host_user;
    private $host_pass;
    private $host_db;
    public $web_db_con = null;
    protected $login_query;
    protected $login_query_result;

    public function __construct($localhost,$user,$pass,$db) {
        $this->localhost_server = $localhost;
        $this->host_user = $user;
        $this->host_pass = $pass;
        $this->host_db = $db;
        
        if(isset($this->localhost_server) && isset($this->host_user) && isset($this->host_pass) && isset($this->host_db)){
            return $this->connect_To_Database();
        }
        
    }
    
    public function connect_To_Database(){
        if($this->web_db_con == null){
            $this->web_db_con = mysqli_connect($this->localhost_server, $this->host_user, $this->host_pass, $this->host_db);
            if($this->web_db_con){
                return true;
            }else{
                return mysqli_connect_errno();
            }
        }
    }
    
    public function select_db(){
        if($this->web_db_con != null){
            if(!mysqli_select_db($this->web_db_con, $this->host_db)){
                return mysqli_error($this->web_db_con);
            }
        }
    }
    
}
 
Ultima modifica di un moderatore:

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
In PHP i costruttori non possono restituire valori perché restituiscono sempre un'istanza della classe. Per gestire gli errori nella programmazione orientata agli oggetti si usano le eccezioni.

Inoltre, esporre la proprietà web_db_con non è una grande idea, perché l'utente potrebbe modificarla arbitrariamente, e non vedo perché dovrebbe essergli permesso.

In sintesi, ecco come l'avrei scritta io (usando, tra l'altro, l'interfaccia a oggetti di MySQLi):

PHP:
<?php

class DatabaseConnection
{
    private $hostname;
    private $username;
    private $password;
    private $database;

    private $mysqli;

    public function __construct($hostname, $username, $password, $database)
    {
        $this->hostname = $hostname;
        $this->username = $username;
        $this->password = $password;
        $this->database = $database;

        $this->connect();
    }

    public function getHostname()
    {
        return $this->hostname;
    }

    public function getUsername()
    {
        return $this->username;
    }

    public function getPassword()
    {
        return $this->password;
    }

    public function getDatabase()
    {
        return $this->database;
    }

    public function isConnected()
    {
        return (bool)$this->getMysqli();
    }

    public function getMysqli()
    {
        return $this->mysqli;
    }

    protected function connect()
    {
        $this->mysqli = new mysqli(
            $this->getHostname(), 
            $this->getUsername(), 
            $this->getPassword(),
            $this->getDatabase()
        );

        if ($mysqli->connect_error) {
            throw new Exception(sprintf(
                'Error while connecting: %s',
                $mysqli->connect_error
            ));
        }
    }
}

Comunque, a meno che non hai intenzione di mettere funzionalità aggiuntive, una classe del genere non ha senso, perché il tutto viene gestito nella stessa identica maniera da MySQLi.
 
Discussioni simili
Autore Titolo Forum Risposte Data
N Consiglio struttura database WFM Database 1
B Consiglio struttura database mysql MySQL 6
R Consiglio su database ASP.NET 1
S Consiglio si relazione tabelle MS Access 1
A Consiglio curvatura monitor Programmazione 0
G Consiglio su piattaforma forum da utilizzare CMS (Content Management System) 1
A Consiglio per creazione sito web CMS (Content Management System) 1
C [Diagramma E/R] Consiglio su progetto Database 0
sbolde91 Consiglio gestione Hosting Hosting 2
B Richiesta Consiglio E-commerce CMS (Content Management System) 1
A consiglio su telecamere ip wi-fi Presentati al Forum 0
S Consiglio esercizio Javascript Javascript 2
M Consiglio sulla gestione di Gerarchie Database 0
L Consiglio SEO gestione dominio + free hosting SEO e Posizionamento 6
M [DIAGRAMMA ER] Consiglio su progetto Presentati al Forum 1
R Consiglio Hosting per e-commerce Hosting 8
L Ciao, chiedo consiglio Presentati al Forum 1
Web93 RICHIESTA CONSIGLIO - FARE UN SITO WEB CMS (Content Management System) 1
F Consiglio IP camera per timelapse (anche notturno) IP Cam e Videosorveglianza 0
M [PHP] Consiglio su come istanziare un Bottone PHP 0
S [PHP] Richiesta consiglio PHP 1
M Consiglio su problematica impianto videosorveglianza IP Cam e Videosorveglianza 4
M [HTML] consiglio su label e checkbox riguardo l'allineamento HTML e CSS 3
D consiglio evitare truffe Annunci servizi di Social Media Marketing 11
A [Visual Basic] Consiglio sul datagridview Visual Basic 0
G [Diagramma ER] Consiglio su progetto Database 0
G consiglio acquisto telecamera nascosta in sensore allarme IP Cam e Videosorveglianza 0
Q consiglio per python Programmazione 1
C Consiglio configurazione IPCam on line su pagina web IP Cam e Videosorveglianza 2
A Consiglio hosting offshore?? Hosting 3
L Wordpress: consiglio plugin per "verifica disponibilità" WordPress 0
S Consiglio Gestionale/ERP su commessa Windows e Software 0
A Richiesta consiglio per kit videosorveglianza IP Cam e Videosorveglianza 0
D [Photoshop] Consiglio acquisto tavoletta grafica de xp-pen Photoshop 0
R Consiglio rete cablata Reti LAN e Wireless 4
D Consiglio per rete ufficio Reti LAN e Wireless 0
W [CMS] Un consiglio per il CMS più adatto a me CMS (Content Management System) 2
E Consiglio sistema di videosorveglianza IP Cam e Videosorveglianza 0
D [HTML] Consiglio su sito Joomla Joomla 6
M [MS Access] consiglio sviluppo query MS Access 1
D Consiglio su come impostare IP statico Reti LAN e Wireless 0
G [PHP] Consiglio su Qry/array PHP 3
M Consiglio su creazione rete Reti LAN e Wireless 0
trattorino Consiglio e parere Annunci servizi di Social Media Marketing 4
Ibernato Consiglio host Hosting 7
M consiglio sistema di videosorveglianza IP Cam e Videosorveglianza 1
andreas88 Consiglio valore in euro di un Notebook usato Discussioni Varie 3
G consiglio telecamere per esterno IP Cam e Videosorveglianza 4
W Consiglio su gestione di un form con XMLHttpRequest Ajax 0
E Consiglio telecamera wifi motorizzata esterno con power bank IP Cam e Videosorveglianza 5

Discussioni simili