В функции библиотеки codeigniter как можно вызвать другую функцию из той же библиотеки - PullRequest
0 голосов
/ 22 октября 2018
<?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;
    }
}

Помощь PLZ

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Я предлагаю либо не использовать статические, либо сделать статичные функции, которые вам нужны.Вы, вероятно, не хотите создавать экземпляр класса внутри класса.Это просто много накладных расходов, которые вам не нужны.Вы также можете переместить все это в вспомогательный файл (не все в 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;
    }
}
0 голосов
/ 22 октября 2018

Поскольку оба метода принадлежат одному и тому же классу, просто замените это:

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

следующим:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...