статическая переменная, вызываемая в функции, выдает ошибку undefined codeigniter php

Я определил статическую переменную в контроллере, но когда я использую эту переменную в функциях, она дает ошибку неопределенной переменной.

Контроллер

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Quiz extends Admin_Controller {

    private static $secure_key = "aXXXXXXXXc";

    public function __construct()
    {
        parent::__construct();
    }

    public function edit($id)
    {
        try
        {
            $token = JWT::encode($postdata, $secure_key);
            echo "<pre>";print_r($token);exit; 
        }
        catch(Exception $e){
            $this->data['error'] = $e->getMessage();
            redirect('/','refresh');
       }
    }
}

$token печатается правильно с помощью jwt, но я получаю сообщение об ошибке

Undefined variable: secure_key

Я пробовал разные методы, чтобы определить $secure_key как

public static $secure_key = "aXXXXXXXc;
static $secure_key = "aXXXXXXXc;

Я попытался определить $secure_key в конструкторе также как $secure_key = "aXXXXXXXc;

но бесполезно. Почему так? Пожалуйста помоги. Я использую codeigniter 3


person Nagesh Katke    schedule 18.10.2017    source источник
comment
$token = JWT::encode($postdata, $secure_key); ... $postdata кажется неопределенным, а $secure_key является статической переменной класса (так что self::$secure_key)?   -  person CD001    schedule 18.10.2017


Ответы (2)


Рекомендуемый метод (на основе безопасности)

Определите переменные в config.php и получите к ним доступ. Это будет работать как глобальная переменная.

$config['secure_key'] = 'myKey';
$this->config->item('secure_key'); # get
$this->config->set_item('secure_key', 'NewKey'); # set

Доступ к нему вот так

$this->$secure_key

Согласно Comment by cd001

self::$secure_key 

Если функция

$this->function_name();
person Abdulla Nilam    schedule 18.10.2017
comment
$secure_key является статическим ... поэтому self::$secure_key, а не $this->secure_key - person CD001; 18.10.2017
comment
да любое значение, которое используется в проекте глобально, должно быть определено в config.php и должно загружаться из config внутри кода - person RAUSHAN KUMAR; 18.10.2017
comment
Спасибо большое работает. Это означает, что всякий раз, когда я определяю статическую переменную в codeigniter, мне нужно написать self::$secure_key или class_name::$variale_name, чтобы использовать ее правильно. - person Nagesh Katke; 18.10.2017
comment
Но @Abdulla, если мы определим в конфигурации, мы все равно можем изменить его значение, указанное в ответе, как item и set_item. Что, если я не хочу менять значение этой переменной, тогда статическое значение было бы гораздо предпочтительнее? - person Nagesh Katke; 18.10.2017

Поскольку $secure_key объявлен как static внутри вашего класса. Таким образом, к нему можно получить доступ, используя self или className как

self::$secure_key

or

Quiz::$secure_key
person RAUSHAN KUMAR    schedule 18.10.2017