Когда использовать Класс по сравнению с Функцией в PHP

Лампочка должна все же продолжиться для этого...

Я действительно любил бы, когда легкое понимает объяснение преимущества для использования класса в php просто использующие функции.

Вот простой пример мысли, которую я имею теперь и задаюсь вопросом, более ли класс эффективен:

Скажите, что у меня есть мини-календарный виджет, который я создал в php. Я думаю о вызывании функции miniCal('arrayVars1', 'var2'). Но я мог бы сделать это дважды на той странице. Действительно используйте меньше ресурсов при помощи класса здесь, создайте новые экземпляры его?

Какое дерево должно я лаять здесь, потому что я чувствую прямо сейчас, что дерево является кирпичной стеной...

61
задан jay 23 January 2010 в 04:31
поделиться

3 ответа

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

Классы обычно не предлагают никаких преимуществ с точки зрения производительности, но они очень редко имеют какие-либо отрицательные эффекты. Их реальное преимущество заключается в том, чтобы сделать код более четко.

Я рекомендую вам прочитать направляющую объектно-ориентированное программирование PHP5 и вход Wikipedia OOP .

54
ответ дан 24 November 2019 в 17:18
поделиться

Общая вещь, поскольку PHP5 должен был создать классы, которые действуют как библиотеки. Это дает вам преимущество организации вашей функциональности и воспользоваться преимуществами классов, таких как __autoload ();

Например, представьте, что у вас есть две функции для шифрования и расшифровки данных. Вы можете обернуть их в классе (давайте назовем это шифрование) и сделайте их статическими функциями. Затем вы можете использовать такие функции, как это (уведомление не требуется никакой инициализации (I.E. $ OBJ = новое шифрование)):

$encrypted_text = Encryption::encrypt($string);

и

$decrypted_text = Encryption::decrypt($string);

Преимущества этого являются:

  1. Ваша функциональность шифрования сгруппирована вместе и организована. Вы, и любой, кто поддерживает код, знаете, где найти функциональность шифрования.
  2. Это очень ясно и легко читать. Хорошо для ремонтопригодности.
  3. Вы можете использовать __autoload (), чтобы включить класс для вас автоматически. Это означает, что вы можете использовать его, как будто это была встроенная функция.
  4. Поскольку он содержится в своем классе и собственном файле, он многоразовый и может быть легко перенесен в новые проекты.
38
ответ дан 24 November 2019 в 17:18
поделиться

У меня есть список мест, которые вы будете использовать классы в стиле OOP в своем ответе на этот вопрос: https://stackoverflow.com/questions/2035449/why-is-oop-hard-for-me/2035482#2035482

В основном, когда вы хотите представлять объект, который имеет в нем вещи. Как переменная базы данных, которая имеет соединение в нем, что уникально. Поэтому я бы сохранил это, чтобы я мог убедиться, что MySQL_Query использует правильное соединение каждый раз:

class MySQL extends Database
{
    public function connect($host, $user, $pass, $database)
    {        
        $this->connection = mysql_connect($host, $user, $pass);
        $this->select_db($database);
    }

    public function query($query)
    {
        return mysql_query($query, $this->connection);
    }

    public function select_db($database)
    {
        mysql_select_db($database);
    }    
}

или, возможно, вы хотите построить форму, вы можете сделать объект формы, который содержит список входов и Таким, что вы хотите быть внутри формы, когда вы решите отобразить его:

class Form
{
    protected $inputs = array();
    public function makeInput($type, $name)
    {
         echo '<input type="'.$type.'" name="'.$name.'">';
    }

    public function addInput($type, $name)
    {
         $this->inputs[] = array("type" => $type,
                "name" => $name);
    }

    public function run()
   {
       foreach($this->inputs as $array)
       { 
          $this->makeInput($array['type'], $array['name'];
       }
    }
}

$form = new form();

$this->addInput("text", "username");
$this->addInput("text", "password");

или как кто-то известен, человек:

class Person{

    public $name;
    public $job_title;
    // ... etc....

}

все являются причинами для создания классов, как они представляют что-то, что имеет свойства, такие как имя или работа или работа Название и может иметь методы, такие как отображение формы.

2
ответ дан 24 November 2019 в 17:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: