如何配置组件?

时间:2012-02-24 10:59:33

标签: php yii yii-components

我想在项目中使用Randomness组件,但无法对其进行配置。当我在做什么

$ss = Yii::app()->Randomness::randomString(32);

这在actionIndex()中引发了一个错误

Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in /protected/controllers/SiteController.php on line 32

我把它放在我的main.php配置文件

'components'=>array(
      'Randomness'=>array('class'=>'Randomness'),
      [......]
),

所以,你能帮助我吗?

----------------------------------------- ------------------ Editted ------------------------------- ------------------------------------

感谢您的所有答案,但似乎Randomness无法使用1and1.com托管。但好消息是我找到了另一种生成随机字符串的好方法。我正在使用似乎在1and1.com上有效的“/ dev / urandom”。这是代码:

<?php
class Random extends CApplicationComponent
{
    public static function intRandom($min, $max) 
    {
        $bits = '';

        $diff = $max-$min;
        $bytes = ceil($diff/256);


        $fp = @fopen('/dev/urandom','rb');
        if ($fp !== FALSE) {
            $bits .= @fread($fp,$bytes);
            @fclose($fp);
        }
        $bitlength = strlen($bits);
        for ($i = 0; $i < $bitlength; $i++) {
            $int =  1+(ord($bits[$i]) % (($max-$min)+1));
        }
        return $int;
    }

    public static function strRandom($length) {
        $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_-+=|]}[{;:?.,></"; 

        $size = strlen( $chars );
        for( $i = 0; $i < $length; $i++ ) {
            $str .= $chars[ self::intRandom(0, strlen($chars)-1) ];
        }

        return $str;
    }
}

但是现在我还有另外一个问题,我是否会遇到一些问题,因为$ char中使用过的字符,我需要在数据库中保存为salt?

2 个答案:

答案 0 :(得分:1)

为什么不只是Randomness::randomString(32);? (按文件规定)

答案 1 :(得分:0)

Yii::app()->Randomness->randomString = 32;

确保您的班级随机性具有 randomString 属性。