在Codeigniter库函数中如何调用同一库的另一个函数

时间:2018-10-22 18:17:41

标签: php codeigniter codeigniter-3

<?php

defined('BASEPATH') OR exit('No direct script access allowed');
define('URL_TO_PARAM_KEY', 'x09c22f5');

class Encryption {

    protected $CI;
    public function __construct() {
        $this->CI =& get_instance();
    }

    public static function decryptParam($url) {

        $ns1 = base64_decode($url);
        $result = $this->CI->xor_string($ns1, URL_TO_PARAM_KEY);
        return json_decode($result);
    }

    public function xor_string($string, $key) {
        for ($i = 0; $i < strlen($string); $i++)
            $string[$i] = ($string[$i] ^ $key[$i % strlen($key)]);
        return $string;
    }
}

请帮助

2 个答案:

答案 0 :(得分:2)

我建议不要使用静态,或者也要使您需要的功能静态。您可能不想在类中创建该类的实例。那只是您不需要的很多开销。您也可以将所有这些都移到帮助文件中(并非CI中的所有内容都必须在一个类中)。

class Encryption {

    /* not needed
    protected $CI;
    public function __construct() {
        $this->CI =& get_instance();
    }
    */

    public static function decryptParam($url) {

        $ns1 = base64_decode($url);
        $result = self::xor_string($ns1, URL_TO_PARAM_KEY);
        return json_decode($result);
    }

    public static function xor_string($string, $key) {
        for ($i = 0; $i < strlen($string); $i++)
            $string[$i] = ($string[$i] ^ $key[$i % strlen($key)]);
        return $string;
    }
}

答案 1 :(得分:0)

由于两个方法都属于同一类,因此只需替换以下内容即可:

$this->CI->xor_string($ns1, URL_TO_PARAM_KEY);

与此:

$this->xor_string($ns1, URL_TO_PARAM_KEY);