codeigniter 4 установить переменную сеанса $ session = \ Config \ Services :: session (); глобально - PullRequest
0 голосов
/ 29 апреля 2020

в codeigniter 4 согласно документации мы должны загрузить библиотеку как

$ session = \ Config \ Services :: session ();

, если я напишу это выше имени контроллера

<?php
namespace App\Controllers;

    $session = \Config\Services::session();

    class Home extends BaseController
    {

    }

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

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Вы можете использовать функцию session() где угодно. Это удобный метод для доступа к экземпляру сеанса или элементу, который был установлен в сеансе.

session(); // instantiate the session class

Если вы не передаете строковый аргумент, он возвращает экземпляр класса сеанса. Он вернет общий экземпляр, если он существует, или вернет вновь созданный экземпляр, если его нет.

После создания экземпляра сеанса с использованием суперглобального значения $_SESSION является наиболее эффективным способом задания данных сеанса.

$_SESSION['username']  = 'johndoe';
$_SESSION['email']     = 'johndoe@some-site.com';
$_SESSION['logged_in'] = TRUE;

Передать строковый аргумент для извлечения сохраненных данных сеанса

$userName = $session('username');

Или вы можете использовать Session методы, подобные этому.

$session = session();
$userName = $session->get('username');

У вас нет чтобы загрузить «помощник» для использования session() всегда загружен и доступен.

0 голосов
/ 29 апреля 2020

я решил, как показано ниже

<?php
namespace App\Controllers;




class Home extends BaseController
{

    protected $session;


    function __construct()
    {

        $this->session = \Config\Services::session();
        $this->session->start();


    }



    public function code4()
    {

        $newdata = [
                'username'  => 'johndoe',
                'email'     => 'johndoe@some-site.com',
                'logged_in' => TRUE
        ];

        $this->session->set($newdata); // setting session data


        echo $this->session->get("username");

    }

    //--------------------------------------------------------------------

}
...