PHP programmation orientée objet base de données se connecter

J'ai juste commencé à apprendre le concept de la programmation orientée Objet, et j'ai écrit cette classe de fonctions.

Il fonctionne bien, mais je suis intéressé à savoir si j'ai fait cela correctement...

Voici mon code:

class Database{
    const DB_HOSTNAME = 'localhost';
    const DB_USERNAME = 'root';
    const DB_PASSWORD = 'password';
    const DB_NAME = 'shop';
    protected $_db_connect;
    protected $_sql;
    protected $_result;
    protected $_row;

    function db_connect(){
        $this->_db_connect = mysql_connect(self::DB_HOSTNAME,self::DB_USERNAME,self::DB_PASSWORD) or die(mysql_error());
    }

    function slect_db(){
        mysql_select_db(self::DB_NAME) or die(mysql_error());
    }

    function sql(){
        $this->_sql = 'SELECT * FROM users';
    }

    function query(){
        $this->_result = mysql_query($this->_sql);
    }

    function fetch_array(){
        while($this->_row = mysql_fetch_array($this->_result)){
            $username = $this->_row['user_USERNAME'];

            echo "<ul>";
                echo "<li>".$username."</li>";
            echo "</ul>";
        }
    }

    function db_close(){
        mysql_close($this->_db_connect);
    }
}

$database = new Database();
$database->db_connect();
$database->slect_db();
$database->sql();
$database->query();
$database->fetch_array();
$database->db_close();
s'il vous Plaît, n'utilisez pas mysql_* fonctions dans le nouveau code. Il n'est plus maintenu et sont officiellement obsolète. Voir le rose boîte? En savoir sur le préparées au lieu de cela, et d'utiliser les PDO ou MySQLi - cet article vous aider à décider lequel. Si vous choisissez AOP, voici un bon tutoriel.
Évitez d'utiliser SELECT *
toujours utiliser le modèle de conception singleton lors de la création de la base de données d'accès pour de meilleures performances
Je ne pense pas que cela prête à la bonne OO design. Considérer que la classe que vous avez écrit n'est pas particulièrement génériques, depuis votre base de données détails de connexion sont juste constantes codées en dur. Aussi, la seule instruction SQL que cette classe peut exécuter est SELECT * FROM users. Est-ce l'intention? J'avais envisager d'étendre cette classe avec d'autres classes qui contiennent SQL spécifique, ou à faire de la fonction SQL accepter une chaîne de requête SQL. Aussi, votre base de données de classe ne devrait pas être en train de faire le rendu de l'affichage (dans fetch_array). en.wikipedia.org/wiki/SOLID_(objet oriented_design)
Des Questions de ce genre sont plus adaptés pour les l'Examen du Code de la Pile d'Échange du site

OriginalL'auteur PiraTa | 2013-12-22