Ввод в сценарий подключения к базе данных OOPHP - PullRequest
0 голосов
/ 09 ноября 2011

Я изучаю OOPHP, и я просто хотел спросить у опытных сценаристов. Этот скрипт действительно работает, но если я изучу его с самого начала, он будет лучше.

Это мой connect.php

<?php
include ("classes/mysql.class.php");

$mysql = new Connect(); 
$mysql->mysql_Connect('localhost', 'root', 'root', 'test');?>

А это мой mysql_class.php

<?php
class Connect {
    var $serverhost, $username, $password, $db_name;

    public function mysql_Connect($host, $user, $pass, $db) {
        $this->serverhost = $host;
        $this->username = $user;
        $this->password = $pass;
        $this->db_name = $db;

        @mysql_connect($this->serverhost, $this->username, $this->password) or die("Kan geen verbinding maken met de database!");
        @mysql_select_db($this->db_name) or die("Kan geen verbinding maken met de geselecteerde database naam");
    }
}?>

Любые комментарии приветствуются!

Ответы [ 2 ]

2 голосов
/ 09 ноября 2011

Мой первый совет - не изобретать велосипед. PHP уже предоставляет несколько встроенных классов объектов интерфейса базы данных, таких как PDO, или классовую версию расширения MySQLi.

Я также хотел бы предложить, чтобы вы никогда не использовали @ для подавления сообщений об ошибках, так как в дальнейшем вы будете преследовать вас, если вам потребуется отладка сценария, и это также отрицательно скажется на производительности сценария.,

Что касается вашего подхода к ООП, то ваш класс довольно минимален, поэтому комментировать пока особо нечего.Я бы посоветовал вам не использовать var для объявления свойств вашего класса, а вместо этого использовать public, protected или private, чтобы установить соответствующую видимость.Ключевое слово var является возвратом к PHP 4 и, вероятно, со временем будет удалено.Кроме того, это псевдоним для публики.Как правило, вам не нужны общедоступные свойства, вы хотите сделать их защищенными или частными и реализовать методы получения и установки для предоставления доступа другим классам.Причина этого в том, что если у вас есть открытые свойства, ничто не мешает другому куску кода испортить внутреннее состояние вашего объекта.Инкапсуляция и сокрытие данных являются важными понятиями в ООП, поэтому вы можете рассмотреть их.

1 голос
/ 09 ноября 2011

Использование @ для подавления ошибок не очень хорошая практика. Также использование die в классе также является очень плохой практикой (это делает код не тестируемым с помощью phpunit), вместо этого вы должны использовать исключения *

http://www.php.net/manual/en/language.exceptions.php

PHP уже имеет некоторый класс для управления базой данных таким образом.

Поскольку ваш класс действительно прост, почему бы не использовать

Mysqli класс http://www.php.net/manual/en/class.mysqli.php

PDO, который я рекомендую: http://ca2.php.net/manual/en/class.pdo.php

Для управления подключением к базе данных. Если вам нужна дополнительная функциональность, вы можете создать подкласс PDO или Mysqli.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...