Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
forbidals
/
wp-content
/
plugins
/
woocommerce-payments
/
src
/
Internal
/
Service
:
SessionService.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php /** * SessionService class. * * @package WooCommerce\Payments */ namespace WCPay\Internal\Service; use WC_Session; use WCPay\Internal\Proxy\LegacyProxy; /** * Session service. Use as a translation layer between `src` classes and Woo core WC_Session class. */ class SessionService { /** * Legacy Proxy. * * @var LegacyProxy */ private $legacy_proxy; /** * Constructor. * * @param LegacyProxy $legacy_proxy Legacy proxy instance. */ public function __construct( LegacyProxy $legacy_proxy ) { $this->legacy_proxy = $legacy_proxy; } /** * Getter. * * @param string $key Session key. * @param mixed|null $initial Default value to return if key is not set. * * @return mixed */ public function get( string $key, $initial = null ) { if ( $this->has_wc_session() ) { return $this->get_wc_session()->get( $key, $initial ); } else { return $initial; } } /** * Setter. * * @param string $key Session key. * @param mixed $value Value to set. * * @return void */ public function set( string $key, $value ): void { if ( $this->has_wc_session() ) { $this->get_wc_session()->set( $key, $value ); } } /** * Checks whether the WC_Session has been initialized. * * @return bool Whether the WC_Session has been initialized. */ private function has_wc_session(): bool { return $this->legacy_proxy->call_function( 'WC' )->session instanceof WC_Session; } /** * Gets the WC_Session instance. * * @return WC_Session|null */ private function get_wc_session(): ?WC_Session { return $this->legacy_proxy->call_function( 'WC' )->session; } }