我一直在努力學習PHP,並且在製作自己的博客引擎方面進展順利。當整合OAuth的時候,我碰到了this solution to encrypt keys。爲什麼這甚至是一堂課?或者爲什麼這些功能至少是靜態的?
用法說,沿着這些線路做一些事情:
<?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";
?>
我的問題是...爲什麼這是一個類?看起來像兩個函數將會很好。我不明白爲什麼要實例化一個對象然後調用一些方法。這是OOP思維橫行的例子,還是我在這裏失蹤的東西?
如果有一些令人信服的理由讓它成爲一個類,那麼爲什麼這些方法不是靜態的,以至於我只能撥打proCrypt::encrypt('my message');
?
這是相關的,因爲我寫的很多代碼都使用靜態函數,或者站在功能編程而不是OOP。如果我正在做一些可怕的錯誤,我想知道這件事。
具體來說,在這種情況下發現一個非常顯著變量是*加密密鑰*。就我理解PHP而言,看起來上面的代碼總是使用密鑰「keee」進行加密,除了作爲演示之外,它並不是非常有用。當然,您可以使用兩個參數的靜態方法,但是這種設計允許將算法和密鑰的組合作爲一個單獨的對象進行傳遞,無需其他參數即可進行加密/解密。 – 2011-04-14 17:46:32