Почему это даже класс?Или почему функции не являются статичными? - PullRequest
1 голос
/ 14 апреля 2011

Я пытаюсь выучить PHP и довольно хорошо продвигаюсь в создании собственного движка для блогов. Когда пришло время интегрировать OAuth, я обнаружил это решение для шифрования ключей .

Использование говорит что-то вроде этого:

<?php

// a new proCrypt instance
$crypt = new proCrypt;

// encrypt the string
$encoded = $crypt->encrypt( 'my message');
echo $encoded."\n";

// decrypt the string
echo $crypt->decrypt( $encoded ) . "\n";

?>

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

Если есть веская причина для того, чтобы он был классом, почему методы не являются статичными, чтобы я мог просто вызвать proCrypt::encrypt( 'my message' );?

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

Ответы [ 4 ]

2 голосов
/ 14 апреля 2011

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

1 голос
/ 14 апреля 2011

Может быть, потому что некоторые алгоритмы шифрования нуждаются в некотором дополнительном состоянии в качестве ввода (например, открытый / закрытый ключ), и это инкапсулируется объектом.

0 голосов
/ 14 апреля 2011

Ну, я не уверен, почему то решение, которое вы нашли, не является статичным.

Я начал использовать это решение , которое я нашел в стеке, которое вызывается статическим способом

0 голосов
/ 14 апреля 2011

Одна возможность: «памятка».

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

Это не "ООП, думая, беги без ума".Это просто разумный замысел, потому что, возможно, за кулисами происходит что-то новое.

...