在读取 cookie 时不在对象上下文中时使用 $this

Using $this when not in object context when reading cookies

我正在尝试读取 Component 中的 cookie,但在 Cookie class?

中出现错误
Using $this when not in object context
CORE\src\Http\Cookie\Cookie.php:738

[![在此处输入图片描述][1]][1]

代码:

<?php
namespace WetKit\Controller\Component;

use Cake\Controller\Component;
use Cake\Controller\Component\AuthComponent;
use Cake\Core\Configure;
use Cake\I18n\I18n;
use Cake\I18n\Time;
use Cake\ORM\Entity;
use Cake\Utility\Text;
use Cake\Http\Cookie\Cookie;
use Cake\Http\Cookie\CookieCollection;

class WetKitComponent extends Component
{
    public function init($configs = [])
    {
        ...
        debug(Cookie::read("wetkit.lang"));
        ...
    }
    ...
}

编辑 2

使用以下代码:

$cookieInstance = new Cookie('test'); 
debug($cookieInstance->read("wetkit.lang"));

我得到:

Invalid data type, must be an array or \ArrayAccess instance.
InvalidArgumentException
Toggle Vendor Stack Frames
CORE\src\Utility\Hash.php:52

编辑 3

如果我像这样将请求传递给我的组件:

//Setting core values for project
$this->appData = $this->WetKit->init([
    'request' => $this->request,
    ...
]);

然后,在我的组件中:

debug($configs['request']->getCookie('wetkit.lang'));

我不再收到错误,它会输出 null。不确定这是否是一种有效的方法。

撇开不正确的代码使用不谈,组件可以访问它们所附加的控制器,从那里您可以获得请求对象,然后您可以从中读取 cookie。

$this->getController()->getRequest()->getCookie('wetkit.lang')

另见