Класс подключения к MySQL


Я пытаюсь выучить ООП с использованием PHP5 и я написал простой класс подключения к MySQL. Пожалуйста, посмотрите и дайте мне некоторую обратную связь от лучших практик, критические ошибки, и любая другая обратная связь вы можете предоставить.

Примечание: в verifyDatabaseConnection способ, я использовал @ символ, чтобы обуздать ошибки я получал.

<?php
class Mysql
{
        private $user;
        private $pass;
        private $data;
        private $host;

        public function __construct($user,$pass,$data,$host)
        {
                $this->user = $user;
                $this->pass = $pass;
                $this->data = $data;
                $this->host = $host;
                $this->verifyNullFields();
        }
        private function verifyNullFields()
        {
                if($this->user == NULL)
                {
                        print('mysql error : username is null');
                }
                if($this->data == NULL)
                {
                        print('mysql error : database name is null');
                }
                else if($this->host == NULL)
                {
                        print('mysql error : host name is null');
                }
                else
                {
                        $this->verifyDatabaseConnection();
                }
        }
        private function verifyDatabaseConnection()
        {

                $link = @mysql_connect($this->host,$this->user,$this->pass);
                if(!$link)
                {
                        die('mysql error : databse connection issue');
                }
                else
                {
                        $this->verifyDatabaseExist();
                }
        }
        private function verifyDatabaseExist()
        {
                $db = mysql_select_db($this->data);
                if(!$db)
                {
                        die('mysql error : database selection issue');
                }
        }

}
?>

<?php
$m = new Mysql("root","","test","localhost");
 ?>


620
3
задан 8 мая 2011 в 04:05 Источник Поделиться
Комментарии
3 ответа


  • Не напечатать что-нибудь или позвоните умереть() из этого класса, потому что это может ломает абонента код/страницы. Например, вы хотите показывать персонализированную страницу об ошибке при возникновении ошибки, но весь текст напечатан ваш код будет перерыв и останавливает. Одна точка-это логическое, как уже сказал. Но я лично предпочитаю использовать исключения для этого (и даже больше-я создаю специальные excepton которая расширяет стандартные исключения класса. Такой подход позволяет отличить одно исключение из другого.).

  • Избавиться от сцепленные вызовы метода. Не называй verifyDatabaseConnection() от verifyNullFields(), verifyDatabaseExist() от verifyDatabaseConnection() и так далее. Ваш метод должен делать только одну вещь как заявлено в их названии.

  • Переименуйте данные - члены чего-то более значимого.

  • На ваш отзыв: вы можете заменить значение$this->пользователь == значение null) проверьте переменной is_null($этом->пользователь)

  • Также, когда вам потребуется создать подобный класс для базы данных PostgreSQL (или подразделение DB) вы должны извлечь базового класса

2
ответ дан 9 мая 2011 в 11:05 Источник Поделиться

Ничто, кажется, тоже сгодится (то, что вы подавляете ошибки через $ссылка = @соединение в порядке, а ты явно проверяя $ссылка переменной после этого.)

Что сказал, Я действительно не уверен, почему вы бы не использовать в mysqli или (еще лучше) ПДО в этот день и возраста, если вы начинаете новый проект.

Кроме того, они то, что ты просто выдает сообщение об ошибке, не может быть наиболее полезным подходом. (Вы можете хотеть возвратить логическое значение true/false, как ну и т. д. хотя я не уверен, что это будет в конструкторе.)

1
ответ дан 8 мая 2011 в 05:05 Источник Поделиться

В названии вопрос, вы просите нас, чтобы судить о вашей "первой попыткой ООП", и снова в теле, "я пытаюсь выучить ООП".

Ну, пример кода не может считаться ООП в моих глазах. Вы просто группировка функциональности в класс.

ООП-это парадигма программирования. Это мышление о том, как вам кода и структуры программы. Речь идет о том, как использовать абстракции решать сложные бизнес-правила, как использовать абстракции, чтобы позволить зависимостей должны быть заменены, например, для тестирования или для переноса на новые платформы.

ООП-это гораздо больше, чем просто группировка кода в классы.

0
ответ дан 10 января 2013 в 10:01 Источник Поделиться