За последние 24 часа нас посетил 52141 программист и 1755 роботов. Сейчас ищут 2105 программистов ...

Инкапсулировать или не инкапсулировать?

Тема в разделе "Прочие вопросы по PHP", создана пользователем rar, 4 июл 2009.

  1. rar

    rar Активный пользователь

    С нами с:
    9 дек 2008
    Сообщения:
    206
    Симпатии:
    0
    Адрес:
    Москва
    Вот пример. У меня есть класс реализующий соединение с БД. У него есть член dsc_connect, который содержит результат соединения (дескриптор или false в случае неудачи). Ниже приведен кусочек когда, который в зависимости от результата соединения либо продолжает программу, либо завершает её:

    Код (Text):
    1. $db = new Database(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
    2.  
    3. if (!$db->dsc_connect) {
    4. print $db->_mysql_error(); // вывод сообщения об ошибке
    5. exit(); // завершение сценария
    6. }
    Как стоит поступать. Следует ли код расположенный ниже операции создания объекта, инкапсулировать в самом объекте. Или же стоит во внешней среде по состоянию объекта конструировать дальнейший ход программы? Т.е. инкапсулировать подобные участки кода или нет? Расскажите о методологии ООП...

    С одной стороны, при инкапсулировании мы разгружаем внешнюю среду от излишнего кода. С другой стороны, объекту, в таком случае, не нужен вообще внешний интерфейс и идет сильное сокрытие логики программы. Вот такая у меня дилемма.
     
  2. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Именно в данном случае логичнее использовать исключения.
     
  3. rar

    rar Активный пользователь

    С нами с:
    9 дек 2008
    Сообщения:
    206
    Симпатии:
    0
    Адрес:
    Москва
    Я сейчас не про исключения, а об инкапсуляции/неинкапсуляции подобных блоков кода.
     
  4. Сергей имеет ввиду, что обработку ошибок обьект не должен реализовывать, он должен сообщать о внештатных ситуациях методом исключений. Вообще, обьект должен реализовывать исключительно свой прямой функционал, сводя до минимума любой другой, и обработку ошибок - в том числе.
     
  5. rar

    rar Активный пользователь

    С нами с:
    9 дек 2008
    Сообщения:
    206
    Симпатии:
    0
    Адрес:
    Москва
    Понял.

    А исключения надо реализовывать в классе или во внешнем коде?
    Можете скинуть хорошую ссылку, где представлено описание исключений в PHP. А-то в моих книгах, этот вопрос затрагивается сухой теорией.