Php 在函数内部使用define

Php 在函数内部使用define,php,Php,我试图在函数中定义一个常量,但是我一直得到一个语法错误。如果我在函数和类之外的文件顶部定义它,它将工作define('SALT_LENGTH',9)一旦我把它放入类或函数中,我就得到语法错误,我也尝试了const SALT\u LENGTH=9但这是同一个问题。我一直在四处寻找答案,但什么也没找到 class userFunctions{ //Generate an encrypted password method public function generateHash($pass

我试图在函数中定义一个常量,但是我一直得到一个语法错误。如果我在函数和类之外的文件顶部定义它,它将工作
define('SALT_LENGTH',9)一旦我把它放入类或函数中,我就得到语法错误,我也尝试了
const SALT\u LENGTH=9但这是同一个问题。我一直在四处寻找答案,但什么也没找到

class userFunctions{

//Generate an encrypted password method
    public function generateHash($password, $salt = null)

{
    if ($salt === null) {
        $salt = substr(md5(uniqid(rand(), true)), 0, SALT_LENGTH);
    } else {
        $salt = substr($salt, 0, SALT_LENGTH);
    }
        return $salt . sha1($salt . $password);
}
    //End of generate encrypted password method
}

你必须使用“self”关键字

像这样,

类用户函数{

const SALT_LENGTH = 5; // define constant 


public function generateHash($password, $salt = null)

{

    if ($salt === null) {
        $salt = substr(md5(uniqid(rand(), true)), 0, self::SALT_LENGTH);
    } else {
        $salt = substr($salt, 0, self::SALT_LENGTH);
    }
    return $salt . sha1($salt . $password);
}

}请在您的类中使用构造函数。更改您喜欢的盐长度值。我选择了50。下面是代码

 function __construct() {
        define('SALT_LENGTH','500');
 }

define是一个函数,当您不在函数范围内时,不能直接调用它。