Функция vs Objects Best Practice - PullRequest
       26

Функция vs Objects Best Practice

6 голосов
/ 30 января 2009

Мне интересно, каковы лучшие практики в отношении функций и объектов. Например, я хочу выполнить действие под названием Tidy. Он примет мои данные в качестве входных данных, приведет их в порядок и вернет.

Теперь я могу сделать это двумя способами. Один использует простую функцию, а другой - класс.

Function: $data = tidy($data);
Class:
$tidy = new Tidy();
$data = $tidy->clean($tidy);

Теперь преимущество в создании класса состоит в том, что мне не нужно загружать класс раньше. Для этого я могу просто использовать функцию автозагрузки php.

Другим примером является класс базы данных. Теперь все, кажется, используют отдельный класс для подключения БД. Но обычно у нас есть только один объект этого класса. Разве это не противоречит определению класса и объектов в том смысле, что мы используем класс только для создания единственного объекта?

Я вроде не понимаю, когда использовать функцию, а когда использовать класс. Какова лучшая практика относительно того же самого? Любые рекомендации?

Спасибо, Alec

Ответы [ 4 ]

4 голосов
/ 30 января 2009
  • Функции обычно выполняют одну конкретную задачу.

  • Объекты представляют собой нечто, с чем связаны задачи. (методы)

Используйте функцию для tidy. Легко и просто. ;-)

4 голосов
/ 30 января 2009

Для чего-то, что делает одно и только одно, я бы просто использовал функцию. Что-нибудь более сложное, и я бы подумал об использовании объекта.

Я потратил время, чтобы пролистать несколько (возможно, уродливых и ужасных) PHP-кода и, действительно, некоторые вещи можно было бы сделать как объекты, но оставить как функции. Преобразование времени и замена строк.

1 голос
/ 30 января 2009

Я бы лично создал объект 'data', который обрабатывал бы данные, а затем использовал бы метод tidy.

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

0 голосов
/ 30 января 2009

Для вашего случая, я бы сделал это функцией, возможно, статической функцией в чем-то вроде класса «util» (для которого единственная цель класса - действовать как пространство имен - он сгруппирует все ваши случайные числа). полезные методы вместе). Как правило, используйте объект только в том случае, если ему нужно хранить некоторые данные, которые должны находиться между несколькими вызовами функций. Вот почему методы базы данных сделаны частью объекта, потому что они хранят дескриптор базы данных, который используется между несколькими вызовами функций. Да, всегда существует только один объект базы данных, но, имея его в качестве объекта, все вещи, связанные с базой данных, группируются в одном месте, что упрощает обслуживание и устранение ошибок.

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