2013-12-10 113 views
-1

我正在使用Crackstation.net的PHP源代碼進行散列+ salting密碼。PHP類 - 無法聲明一個

https://crackstation.net/hashing-security.htm#phpsourcecode

我試圖把這個代碼在一個類中,以方便使用。

我想我可以用代碼頂部額外的一行「class PasswordHasher {」和一個不錯的右括號。

<?php  

class PasswordHasher{ 
// These constants may be changed without breaking existing hashes. 
define("PBKDF2_HASH_ALGORITHM", "sha256"); 
define("PBKDF2_ITERATIONS", 1000); 
define("PBKDF2_SALT_BYTE_SIZE", 24); 
define("PBKDF2_HASH_BYTE_SIZE", 24); 

define("HASH_SECTIONS", 4); 
define("HASH_ALGORITHM_INDEX", 0); 
define("HASH_ITERATION_INDEX", 1); 
define("HASH_SALT_INDEX", 2); 
define("HASH_PBKDF2_INDEX", 3); 

//all functions from the URL source 

} 
?> 

由於某些原因,Netbeans不希望我在類中使用define關鍵字。如果我將所有定義的行放在類刪除之上,我不會從Netbeans得到任何語法錯誤。我對PHP很新,而且我找不到這種行爲的原因。我做錯了什麼,以及如何將此源代碼轉換爲面向面向對象編程的類?

+0

您正在尋找類'const'ants。 [Here](http://www.php.net/manual/en/language.oop5.constants.php) –

+0

其實,只是看着'Crackstation'代碼。它使用在類之外定義的常量。所以你唯一的選擇就是把他們留在那裏。 –

+0

請閱讀精美的手冊 –

回答

1

嘗試const上課:

const PBKDF2_HASH_ALGORITHM = "sha256"; 
0

您正試圖在方法的邊界之外執行代碼class

class foo { 
    $bar = 1 + 1; // illegal - not in a method 
    function baz() { 
     $this->bar = 1 + 1; // legal, inside a method. 
    } 
}