回答:
IMOの最善のアプローチは、Cookieの作成をラップするクラスを作成し、それを必要な場所で使用することです。
Cookieクラス
{ベンダー} / {モジュール} /Cookie/Example.php
<?php 
namespace Vendor\Module\Cookie;
use Magento\Framework\Stdlib\CookieManagerInterface;
use Magento\Framework\Stdlib\Cookie\CookieMetadataFactory;
use Magento\Framework\Session\SessionManagerInterface;
class Example
{
    /**
     * Name of cookie that holds private content version
     */
    const COOKIE_NAME = 'example';
    /**
     * CookieManager
     *
     * @var CookieManagerInterface
     */
    private $cookieManager;
    /**
     * @var CookieMetadataFactory
     */
    private $cookieMetadataFactory;
    /**
     * @var SessionManagerInterface
     */
    private $sessionManager;
    /**
     * @param CookieManagerInterface $cookieManager
     * @param CookieMetadataFactory $cookieMetadataFactory
     * @param SessionManagerInterface $sessionManager
     */
    public function __construct(
        CookieManagerInterface $cookieManager,
        CookieMetadataFactory $cookieMetadataFactory,
        SessionManagerInterface $sessionManager
    ) {
        $this->cookieManager = $cookieManager;
        $this->cookieMetadataFactory = $cookieMetadataFactory;
        $this->sessionManager = $sessionManager;
    }
    /**
     * Get form key cookie
     *
     * @return string
     */
    public function get()
    {
        return $this->cookieManager->getCookie(self::COOKIE_NAME);
    }
    /**
     * @param string $value
     * @param int $duration
     * @return void
     */
    public function set($value, $duration = 86400)
    {
        $metadata = $this->cookieMetadataFactory
            ->createPublicCookieMetadata()
            ->setDuration($duration)
            ->setPath($this->sessionManager->getCookiePath())
            ->setDomain($this->sessionManager->getCookieDomain());
        $this->cookieManager->setPublicCookie(
            self::COOKIE_NAME,
            $value,
            $metadata
        );
    }
    /**
     * @return void
     */
    public function delete()
    {
        $metadata = $this->cookieMetadataFactory
            ->createPublicCookieMetadata()
            ->setDuration($duration)
            ->setPath($this->sessionManager->getCookiePath())
            ->setDomain($this->sessionManager->getCookieDomain());
        $this->cookieManager->deleteCookie(
            self::COOKIE_NAME,
            $metadata
        );
    }
}この例はMagento \ Framework \ App \ PageCache \ FormKeyに基づいて おり、「example」という名前の単一のCookieを表します
パスやhttp_onlyなどを変更するために、いくつかのカスタムプロパティを$ metadata(PublicCookieMetadata)に追加する場合は、set()and / or delete()メソッドをリファクタリングする必要があります。
どうやって使うのですか
ほとんどすべての場所でObject Managerを使用して、そのクラスにアクセスできます(Uいアプローチ):
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$objectManager->get('Vendor\Module\Cookie\Example')
    ->set('value', 3600);Cookieを作成する必要がある「場所」に応じて、クラスのコンストラクターを見ることができます。オブジェクトマネージャーが既にある場合は、コンストラクターに挿入することもできます。
createCookieMetaData()にcreatePublicCookieMetadata()in setメソッドで編集する必要があります。しかし、スマートなアプローチ!
                    Magento\Framework\Session\SessionManagerInterfaceあなたとMagento\Framework\Session\Config\ConfigInterfaceused の違いは何Magento\Framework\Session\SessionManagerですか?
                    $this->createPublicCookieMetadata()このクラスには存在しないため、変更を提案しました。$this->cookieMetadataFactory->createPublicCookieMetadata() magentoリポジトリで参照する必要があります。しかし、私は2つの拒否を取得しました。笑
                    このようなphp基本機能を使用してCookieを設定および取得できます。
//set cookie
$cookie_name = "magento";
$cookie_value = "How to Cookie";
setcookie($cookie_name, $cookie_value, time()+3600); /* expire in 1 hour */
//get cookie
if(!isset($_COOKIE[$cookie_name])) {
    echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
    echo "Cookie '" . $cookie_name . "' is set!<br>";
    echo "Value is: " . $_COOKIE[$cookie_name];
}