Я добавил библиотеку под названием MyLib, внутри моего App/Lib
папка в CakePHP 2.5.5:
App::uses('CakeSession', 'Model/Datasource');
class MyLib {
public static function myfunction1() {
return CakeSession::read('Config.language');
}
public static function myfunction2() {
return $_SESSION;
}
}
Я определил это внутри App/Config/bootstrap.php
:
App::uses('MyLib', 'Lib');
Внутри MyController1 я использую это так.
myAction выдает пустой вывод:
Когда я проверяю, я вижу, что данные сеанса пусты для MyController1.
class MyController1 {
function myAction1(){
echo MyLib::myfunction1();
print_r(MyLib::myfunction2());
}
}
У меня также есть другой контроллер с именем MyController2.
Когда я использую MyLib::myfunction1()
все отлично работает для MyController2.
class MyController2 {
function myAction2(){
echo MyLib::myfunction1();
print_r(MyLib::myfunction2());
}
}
Что сделает сессию пустой для какого-либо контроллера / действия?
У вас есть опечатка при загрузке вашей библиотеки.
App::uses('MyLib ', 'Lib');
См пробел после MyLib
? Так должно быть:
App::uses('MyLib', 'Lib');
Вы также злоупотребляете print_r
функция. Второй параметр сообщает функции, если вы хотите вернуть информацию, а не распечатать ее. Ты должен сделать:
print_r(MyLib::myfunction2());
Хотя вы также можете сделать это:
$my_session = print_r(MyLib::myfunction2(),true);
echo $my_session;
У меня была похожая проблема. Это уродливое решение, но оно помогло в моем случае. Попробуйте добавить приложение :: использует в методе. Что-то вроде этого:
class MyController2 {
function myAction2(){
App::uses('MyLib', 'Lib');
echo MyLib::myfunction1();
print_r(MyLib::myfunction2());
}
}
Я почти уверен, что у вас есть проблема в другом месте вашего кода, которую вы не показываете нам (я думаю, вы показали здесь пример кода, который не является вашим реальным кодом).
Я проверил с вашим точным кодом, и оба контроллера показывают точно так же. Нет абсолютно никакой причины, по которой один контроллер будет показывать что-то другое, если только этот контроллер не содержит чего-то другого, чего нет у другого.