menu
science

دریافت محتوا

آزمایشگاه

آزمایشگاه برای این صفحه دسترس نیست

ذخیره و نگهداری اطلاعات به وسیله هسته کَش

با استفاده از این هسته می‌توانید کوکی ها، نشست ها و کَش ها را مدیریت کنید. یکی دیگر از قسمت های این هسته، دامنه ها (scope) ها هستند که به صورت سراسری (global) قابل دریافت و تغییر هستند و در هر درخواست ایجاد و سپس از بین می‌روند.

📁 material-dashboard
   📁 core
      📁 AMDCache
         🗎 AMDCache.php <-| 

چگونه از هسته کَش استفاده کنیم؟

تمامی هسته ها به صورت سراسری (global) استفاده شده اند و از طریق کلید واژه global می‌توانید به آنها دسترسی پیدا کنید.

# Use global cache core
global $amdCache;

راهنما را مطالعه کنید!

این صفحه شامل یک راهنمای ساده به همراه مثال برای درک بهتر است، می‌توانید بخش آزمایشگاه را با کلیک بر روی دکمه زیر انتخاب کنید:

مستندات - AMDCache.php

const STAMPS

type -> array

since -> 1.0.0

/**
 * Time stamps
 * @var array
 * @since 1.0.0
 */
const STAMPS = array('minute' => 60, 'hour' => 3600, 'day' => 86400, 'week' => 604800, 'month' => 2592000)

material-dashboard/core/AMDCache/AMDCache.php: 13

Indexed by Amatris crawlers

قالب های زمانی: برای ذخیره کوکی ها به مدت زمان های دلخواه


const PREFIX

type -> string

since -> 1.0.0

/**
 * Cookies and sessions prefix
 * @var string
 * @since 1.0.0
 */
const PREFIX = 'amd_'

material-dashboard/core/AMDCache/AMDCache.php: 26

Indexed by Amatris crawlers

پیشوند کوکی و کش ها


public $scope

type -> stdClass

since -> 1.0.0

/**
 * Variable scope
 * @var stdClass
 * @since 1.0.0
 */
public $scope;

material-dashboard/core/AMDCache/AMDCache.php: 33

Indexed by Amatris crawlers

آبجکت scope برای نگهداری تایپ های مختلف متغیر ها و نگهداری آنها در طول هر درخواست


public $cache

type -> array

since -> 1.0.0

/**
 * Public cache variables
 * @var array
 * @since 1.0.0
 */
public $cache;

material-dashboard/core/AMDCache/AMDCache.php: 40

Indexed by Amatris crawlers

آبجکت scope برای نگهداری تایپ های مختلف متغیر ها و نگهداری آنها در طول هر درخواست


protected $defaults

type -> array

since -> 1.0.0

/**
 * Default variables
 * @var array
 * @since 1.0.0
 */
protected $defaults;

material-dashboard/core/AMDCache/AMDCache.php: 47

Indexed by Amatris crawlers

متغیر برای ذخیره و پشتیبان گیری و rollback تنظیمات و اطلاعات در صورت نیاز در طول اجرای برنامه


protected $css

type -> array

since -> 1.0.0

/**
 * CSS stylesheets URL
 * @var array
 * @since 1.0.0
 */
protected $css;

material-dashboard/core/AMDCache/AMDCache.php: 54

Indexed by Amatris crawlers

آدرس فایل های CSS مورد نیاز در صفحات مختلف داشبورد


protected $js

type -> array

since -> 1.0.0

/**
 * JavaScript scripts URL
 * @var array
 * @since 1.0.0
 */
protected $js;

material-dashboard/core/AMDCache/AMDCache.php: 61

Indexed by Amatris crawlers

آدرس فایل های JS مورد نیاز در صفحات مختلف داشبورد


public $SCOPE_GROUP

type -> array

since -> 1.0.0

/**
 * Array for storing data with multiple groups
 * @var array
 * @since 1.0.0
 */
public $SCOPE_GROUP;

material-dashboard/core/AMDCache/AMDCache.php: 89

Indexed by Amatris crawlers

گروه scope ها برای نگهداری اطلاعات در دسته بندی و گروه های متفاوت


public function setScopeGroup

return -> void

since -> 1.0.0

Parameters <>

  $group -> string
  Group ID

  $id_s -> string | array
  Group data: array for recursive list, string for single item

  $value -> mixed
  Item value: if $id_s is an array leave it empty

/**
 * Store data in multiple groups
 *
 * @param string $group
 * Group ID
 * @param string|array $id_s
 * Group data: array for recursive list, string for single item
 * @param mixed $value
 * Item value: if `$id_s` is an array leave it empty
 *
 * @return void
 * @since 1.0.0
 */
public function setScopeGroup($group, $id_s, $value = ""){
    if (is_array($id_s)) {
        foreach ($id_s as $id => $v) {
            self::setScopeGroup($group, $id, $v);
        }
    } else {
        if (is_scalar($id_s)) {
            $this->SCOPE_GROUP[$group][$id_s] = $value;
        }
    }
}

material-dashboard/core/AMDCache/AMDCache.php: 147

Indexed by Amatris crawlers

ذخیره سازی اطلاعات در گروه های مختلف


public function updateScopeGroup

return -> void

since -> 1.0.4

Parameters <>

  $group -> string
  Group ID

  $new_value -> mixed
  New value to replace

/**
 * Replace group data
 *
 * @param string $group
 * Group ID
 * @param mixed $new_value
 * New value to replace
 *
 * @return void
 * @since 1.0.4
 */
public function updateScopeGroup($group, $new_value){
    if (isset($this->SCOPE_GROUP[$group])) {
        $this->SCOPE_GROUP[$group] = $new_value;
    }
}

material-dashboard/core/AMDCache/AMDCache.php: 168

Indexed by Amatris crawlers

به روزرسانی آیتم های گروه ها


public function getScopeGroup

return -> array|mixed

since -> 1.0.0

Parameters <>

  $group -> string
  Group ID

  $id -> null | string
  Group id: leave it to null to get the whole group data

  $sort -> bool
  Whether to sort array or not

/**
 * Get group items.
 * if <code>$id</code> is null, it returns the whole group and returns empty array if group is not set<br>
 * if <code>$id</code> is not null, returns items with specified id and returns empty array if id is not set
 *
 * @param string $group
 * Group ID
 * @param null|string $id
 * Group id: leave it to null to get the whole group data
 * @param bool $sort
 * Whether to sort array or not
 *
 * @return array|mixed
 * @since 1.0.0
 */
public function getScopeGroup($group, $id = null, $sort = false){
    if (empty($id)) {
        $data = $this->SCOPE_GROUP[$group] ?? [];
    } else {
        $data = $this->SCOPE_GROUP[$group][$id] ?? [];
    }
    if ($sort and is_array($data)) {
        usort($data, function ($a, $b) {
            return ($a["priority"] ?? 10) - ($b["priority"] ?? 10);
        });
    }
    return $data;
}

material-dashboard/core/AMDCache/AMDCache.php: 188

Indexed by Amatris crawlers

دریافت گروه های ذخیره شده


public function removeScopeGroup

return -> void

since -> 1.0.0

Parameters <>

  $group -> string
  Group ID

  $id -> string | null
  Item ID, pass null to remove all items

/**
 * Remove item groups item
 *
 * @param string $group
 * Group ID
 * @param string|null $id
 * Item ID, pass null to remove all items
 *
 * @return void
 * @since 1.0.0
 */
public function removeScopeGroup($group, $id = null){
    if (isset($this->SCOPE_GROUP[$group])) {
        if (isset($this->SCOPE_GROUP[$group][$id])) {
            unset($this->SCOPE_GROUP[$group][$id]);
        } else {
            unset($this->SCOPE_GROUP[$group]);
        }
    }
}

material-dashboard/core/AMDCache/AMDCache.php: 214

Indexed by Amatris crawlers

حذف موارد در گروه ها


public function setCache

return -> void

since -> 1.0.0

Parameters <>

  $key -> string
  Cache key (PREFIX constant will be added to the beginning for cookies)

  $value -> string | mixed
  Cache value (for cookie only string is acceptable)

  $cookie -> null | true | int
  Number of days or true for 1 day or null to skip adding cookie

/**
 * Set cache
 * <br>Note: Cache contains sessions, cookies and scope variables
 *
 * @param string $key
 * Cache key (`PREFIX` constant will be added to the beginning for cookies)
 * @param string|mixed $value
 * Cache value (for cookie only string is acceptable)
 * @param null|true|int $cookie
 * Number of days or true for 1 day or null to skip adding cookie
 *
 * @return void
 * @since 1.0.0
 */
public function setCache($key, $value, $cookie = null){
    $this->cache[$key] = $value;
    $id = self::PREFIX . $key;
    if ($cookie) {
        setcookie($id, $value, time() + self::STAMPS['day'] * (is_int($cookie) ? $cookie : 1), '/');
    }
}

material-dashboard/core/AMDCache/AMDCache.php: 388

Indexed by Amatris crawlers

اضافه کردن کش (کوکی، session و کش)


public function getCache

return -> mixed|null

since -> 1.0.0

Parameters <>

  $key -> string
  Cache key

  $type -> string
  Cache type: "cookie" | "session" | "scope"

/**
 * Get cache if exist
 *
 * @param string $key
 * Cache key
 * @param string $type
 * Cache type: "cookie" | "session" | "scope"
 *
 * @return mixed|null
 * @since 1.0.0
 */
public function getCache($key, $type = "*"){
    if ($cache = self::cookieExists($key, true) and in_array($type, ["*", "cookie"])) {
        return $cache;
    }
    if ($cache = self::sessionExists($key, true) and in_array($type, ["*", "session"])) {
        return $cache;
    }
    if ($cache = self::cacheExists($key, true) and in_array($type, ["*", "scope"])) {
        return $cache;
    }
    return null;
}

material-dashboard/core/AMDCache/AMDCache.php: 359

Indexed by Amatris crawlers

دریافت کش (کوکی، نشست و یا کش دامنه ها و scope ها)


public function removeCache

return -> void

since -> 1.0.0

Parameters <>

  $key -> string
  Cache key (without prefix)

/**
 * Remove cache if exists.
 * <br>Note: Cache contains sessions, cookies and scope variables
 *
 * @param string $key
 * Cache key (without prefix)
 *
 * @return void
 * @since 1.0.0
 */
public function removeCache($key){
    $id = self::PREFIX . $key;
    # Remove cookie
    if (self::cookieExists($key)) {
        // Just making sure
        $_COOKIE[$id] = null;
        setcookie($id, "", time() - 3600, "/");
        unset($_COOKIE[$id]);
    }
    # Remove session
    if (self::sessionExists($key)) {
        $_SESSION[$id] = null;
        unset($_SESSION[$id]);
    }
    # remove cache
    if (self::cacheExists($key)) {
        $this->cache[$key] = null;
        unset($this->cache[$key]);
    }
}

material-dashboard/core/AMDCache/AMDCache.php: 237

Indexed by Amatris crawlers

حذف کش درصورت وجود


public function cacheExists

return -> bool|mixed|string

since -> 1.0.0

Parameters <>

  $key -> string
  Cache key

  $get -> false
  Whether to get cache (if exists) or not

  $default -> string
  Default value that return if cache doesn't exist

/**
 * Check if `$cache` variable contains an element
 *
 * @param string $key
 * Cache key
 * @param false $get
 * Whether to get cache (if exists) or not
 * @param string $default
 * Default value that return if cache doesn't exist
 *
 * @return bool|mixed|string
 * @since 1.0.0
 */
public function cacheExists($key, $get = false, $default = ""){
    return !empty($this->cache[$key]) ? $get ? $this->cache[$key] : true : ($get ? $default : false);
}

material-dashboard/core/AMDCache/AMDCache.php: 342

Indexed by Amatris crawlers

بررسی کردن اینکه آیا المان مورد نظر در کش موجود است یا خیر (نشست ها و کوکی ها شامل نمی‌شوند)


public function setCookie

return -> void

since -> 1.0.0

Parameters <>

  $key -> string
  Cookie key (PREFIX constant will be added to the beginning)

  $value -> string
  Cookie value

  $cookie -> bool | int
  Number of days or true for 1 day

/**
 * Set cookie
 *
 * @param string $key
 * Cookie key (`PREFIX` constant will be added to the beginning)
 * @param string $value
 * Cookie value
 * @param bool|int $cookie
 * Number of days or true for 1 day
 *
 * @return void
 * @since 1.0.0
 */
public function setCookie($key, $value, $cookie = false){
    $id = self::PREFIX . $key;
    if (!headers_sent()) {
        setcookie($id, $value, time() + self::STAMPS['day'] * (is_int($cookie) ? $cookie : 1), '/');
    }
}

material-dashboard/core/AMDCache/AMDCache.php: 412

Indexed by Amatris crawlers

تغییر مقدار کوکی


public function removeCookie

return -> void

since -> 1.0.0

Parameters <>

  $key -> string
 

/**
 * Remove cookie if exists
 *
 * @param string $key
 *
 * @return void
 * @since 1.0.0
 */
public function removeCookie($key){
    $id = self::PREFIX . $key;
    // Remove cookie by changing the expiration time
    if (self::cookieExists($key)) {
        setcookie($id, "", time() - 3600, "/");
    }
}

material-dashboard/core/AMDCache/AMDCache.php: 281

Indexed by Amatris crawlers

حذف کوکی


public function setSession

return -> void

since -> 1.0.0

Parameters <>

  $key -> string
  Session key (PREFIX constant will be added to the beginning)

  $value -> string
  Session value

/**
 * Set session
 *
 * @param string $key
 * Session key (`PREFIX` constant will be added to the beginning)
 * @param string $value
 * Session value
 *
 * @return void
 * @since 1.0.0
 */
public function setSession($key, $value){
    $id = self::PREFIX . $key;
    $_SESSION[$id] = $value;
}

material-dashboard/core/AMDCache/AMDCache.php: 432

Indexed by Amatris crawlers

افزودن یا به روزرسانی نشست (session)


public function setSession

return -> void

since -> 1.0.0

Parameters <>

  $key -> string
  Session key (PREFIX constant will be added to the beginning)

  $value -> string
  Session value

/**
 * Set session
 *
 * @param string $key
 * Session key (`PREFIX` constant will be added to the beginning)
 * @param string $value
 * Session value
 *
 * @return void
 * @since 1.0.0
 */
public function setSession($key, $value){
    $id = self::PREFIX . $key;
    $_SESSION[$id] = $value;
}

material-dashboard/core/AMDCache/AMDCache.php: 432

Indexed by Amatris crawlers

دریافت مقدار نشست


public function cacheIsset

return -> bool

since -> 1.0.0

Parameters <>

  $key -> string
  Cache key (PREFIX constant will be added to the beginning for sessions and cookies)

  $onlyCookie -> bool
  Whether to only check cookie or all cache methods

/**
 * Check if cache is set
 * <br>Note: Cache contains sessions, cookies and scope variables
 *
 * @param string $key
 * Cache key (`PREFIX` constant will be added to the beginning for sessions and cookies)
 * @param bool $onlyCookie
 * Whether to only check cookie or all cache methods
 *
 * @return bool
 * @since 1.0.0
 */
public function cacheIsset($key, $onlyCookie = false){
    $cookieExists = self::cookieExists($key);
    if ($onlyCookie) {
        return $cookieExists;
    }
    if ($cookieExists) {
        return true;
    }
    if (self::cacheExists($key)) {
        return true;
    }
    if (self::cacheExists($key)) {
        return true;
    }
    return false;
}

material-dashboard/core/AMDCache/AMDCache.php: 469

Indexed by Amatris crawlers

بررسی کردن اینکه آیا المان مورد نظر در کش موجود است یا خیر (شامل نشست ها و کوکی ها)


public function addStyle

return -> void

since -> 1.0.0

Parameters <>

  $id -> string
  Stylesheet ID. You can specify stylesheet scope by adding ':' character to the beginning of ID. e.g: "dashboard:style_id"

  $url -> string
  Stylesheet URL

  $ver -> string
  Stylesheet version

/**
 * Add CSS stylesheet
 *
 * @param string $id
 * Stylesheet ID. You can specify stylesheet scope by adding ':' character to the beginning of ID. e.g: "dashboard:style_id"
 * @param string $url
 * Stylesheet URL
 * @param string $ver
 * Stylesheet version
 *
 * @return void
 * @since 1.0.0
 */
public function addStyle($id, $url, $ver = "unknown"){
    $this->css[$id] = array('id' => $id, 'url' => $url, 'ver' => $ver);
}

material-dashboard/core/AMDCache/AMDCache.php: 502

Indexed by Amatris crawlers

افزودن آدرس فایل CSS به صفحات مورد نظر


public function dumpStyles

return -> void

since -> 1.0.0

Parameters <>

  $scope -> string
  Stylesheet scope

/**
 * Print stylesheets
 *
 * @param string $scope
 * Stylesheet scope
 *
 * @return void
 * @since 1.0.0
 */
public function dumpStyles($scope = null){
    if (!is_array($this->css) or empty($this->css)) {
        return;
    }
    foreach ($this->css as $id => $data) {
        if (!empty($scope) and !amd_starts_with($id, "{$scope}:")) {
            continue;
        }
        if (empty($scope) and strpos($id, ":") !== false) {
            continue;
        }
        $v = $data['ver'];
        # @formatter off
        ?>
            <link rel="stylesheet" href="<?php 
        echo esc_url($data['url'] . (!empty($v) ? '?ver=' . $v : ''));
        ?>">
			<?php 
        # @formatter on
    }
}

material-dashboard/core/AMDCache/AMDCache.php: 544

Indexed by Amatris crawlers

چاپ تگ link فایل های CSS مورد نظر برای صفحات مشخص


public function addScript

return -> void

since -> 1.0.0

Parameters <>

  $id -> string
  Script ID. You can specify script scope by adding ':' character to the beginning of ID. e.g: "dashboard:script_id"

  $url -> string
  Script URL

  $ver -> string
  Script version

/**
 * Add JS script
 *
 * @param string $id
 * Script ID. You can specify script scope by adding ':' character to the beginning of ID. e.g: "dashboard:script_id"
 * @param string $url
 * Script URL
 * @param string $ver
 * Script version
 *
 * @return void
 * @since 1.0.0
 */
public function addScript($id, $url, $ver = "unknown"){
    $this->js[$id] = array('id' => $id, 'url' => $url, 'ver' => $ver);
}

material-dashboard/core/AMDCache/AMDCache.php: 525

Indexed by Amatris crawlers

افزودن فایل های JS به صفحات مورد نظر


public function dumpScript

return -> void

since -> 1.0.0

Parameters <>

  $scope -> string
  Script scope

/**
 * Print script
 * @param string $scope
 * Script scope
 *
 * @return void
 * @since 1.0.0
 */
public function dumpScript($scope = null){
    if (!is_array($this->js) or empty($this->js)) {
        return;
    }
    foreach ($this->js as $id => $data) {
        if (!empty($scope) and !amd_starts_with($id, "{$scope}:")) {
            continue;
        }
        if (empty($scope) and strpos($id, ":") !== false) {
            continue;
        }
        $v = $data['ver'];
        # @formatter off
        ?>
            <script src="<?php 
        echo esc_url($data['url'] . (!empty($v) ? '?ver=' . $v : ''));
        ?>"></script>
			<?php 
        # @formatter on
    }
}

material-dashboard/core/AMDCache/AMDCache.php: 572

Indexed by Amatris crawlers

چاپ تگ script فایل های JS مورد نظر برای صفحات مشخص


public function setDefault

return -> void

since -> 1.0.0

Parameters <>

  $key -> string
  Item key

  $value -> mixed
  Item value

/**
 * Set defaults value
 *
 * @param string $key
 * Item key
 * @param mixed $value
 * Item value
 *
 * @return void
 * @since 1.0.0
 */
public function setDefault($key, $value){
    $this->defaults[$key] = $value;
}

material-dashboard/core/AMDCache/AMDCache.php: 696

Indexed by Amatris crawlers

افزودن یا به روزرسانی موارد پیشفرض ها


public function getDefault

return -> mixed|string

since -> 1.0.0

Parameters <>

  $key -> string
  Item key

  $default -> mixed
  Return this value if item doesn't exist

/**
 * Get defaults value
 *
 * @param string $key
 * Item key
 * @param mixed $default
 * Return this value if item doesn't exist
 *
 * @return mixed|string
 * @since 1.0.0
 */
public function getDefault($key, $default = ""){
    return isset($this->defaults[$key]) ? $this->defaults[$key] : $default;
}

material-dashboard/core/AMDCache/AMDCache.php: 679

Indexed by Amatris crawlers

دریافت موارد ثبت شده پیشفرض ها

استفاده از هسته های global

قبل از استفاده از متد های این هسته باید با استفاده از کد های زیر آن را قابل دسترس کنید:

# Use global cache core
global $amdCache;

دامنه ها و Scope ها

متغیر های scope یکی دیگر از روش های نگهداری اطلاعات در این هسته هستند، این متغیر ها تنها در ابتدای هر درخواست ایجاد و در پایان آن درخواست از بین خواهند رفت.

متغیر های وابسته به دامنه (scope) در بخش هایی از داشبورد استفاده شده است، برای مثال پس از خواندن تنظیمات مورد نیاز سایت از پایگاه داده آنها را در این متغیر ذخیره می‌کند تا از اتصال مجدد به پایگاه داده و خواندن دوباره اطلاعات جلوگیری کند.

می‌توانید گروه‌های دامنه (scope group) جدید اضافه یا گروه‌های موجود را با استفاده از متد setScopeGroup اضافه یا به‌روز رسانی کنید. هنگامی که این متد را فراخوانی می‌کنید، آیتم‌های جدید اضافه می‌شوند و موارد موجود جایگزین می‌شوند. لطفاً توجه داشته باشید که فراخوانی جداگانه آیتم‌های قدیمی شما را حذف نخواهد کرد. مثال:

$amdCache->setScopeGroup( "banned_users", array(
    "user_12" => array(
        "ID" => 12,
        "priority" => 10,
        "email" => "john.doe@gmail.com"
    ),
    "user_24" => array(
        "ID" => 24,
        "priority" => 12,
        "email" => "john.blow@gmail.com"
    )
) );

$amdCache->setScopeGroup( "banned_users", array(
    "user_28" => array(
        "ID" => 28,
        "priority" => 1,
        "email" => "jane.doe@gmail.com"
    )
) );

با استفاده از این کد، می‌توانید 3 عنصر را درون یک گروه با نام banned_users اضافه کنید، سپس می‌توانید مقادیر آن‌ها را با استفاده از متد getScopeGroup بخوانید.

$all = $amdCache->getScopeGroup( "banned_users" );

در کد بالا، شما مقادیر گروه banned_users را خوانده و آن‌ها را در یک متغیر به نام $all ذخیره کرده‌اید. مقدار این متغیر به اینصورت است:

array(
    "user_12" => array(
        "ID" => 12,
        "priority" => 10,
        "email" => "john.doe@gmail.com"
    ),
    "user_24" => array(
        "ID" => 24,
        "priority" => 12,
        "email" => "john.blow@gmail.com"
    ),
    "user_28" => array(
        "ID" => 28,
        "priority" => 1,
        "email" => "jane.doe@gmail.com"
    )
)

این مقادیر بر اساس زمان ثبت آن‌ها مرتب شده‌اند. درصورت نیاز می‌توانید آن‌ها را بر اساس کلید priority مرتب کنید کافی است مقدار پارامتر $sort را به true تغییر دهید.

$ordered = $amdCache->getScopeGroup( "banned_users", null, true );
array(
    0 => array(
        "ID" => 28,
        "priority" => 1,
        "email" => "jane.doe@gmail.com",
    ),
    1 => array(
        "ID" => 12,
        "priority" => 10,
        "email" => "john.doe@gmail.com",
    ),
    2 => array(
        "ID" => 24,
        "priority" => 12,
        "email" => "john.blow@gmail.com"
    )
)

توجه: با مرتب سازی گروه، آرایه بازگشتی (returned) به صورت شماره ای (number indexed) بازگردانده می‌شود و درایه (index) های پیش‌فرض در دسترس نخواهد بود. درصورت نیاز می‌توانید شناسه عنصر خود را درون آرایه نگه داری کنید. همچنین توجه داشته باشید که این فقط آرایه بازگشتی است و آرایه واقعی مرتب نشده است و ایندکس های اصلی در آرایه حفظ شده‌اند.

توجه: ویژگی (property) priority اختیاری است، اگر این ویژگی را به آرایه اضافه نکنید، عدد 10 به عنوان مقدار پیش‌فرض برای مرتب‌سازی تعیین می‌شود.

اگر نیاز به دریافت یک عنصر خاص از گروه دارید، باید شناسه عنصر را به پارامتر $id ارسال (pass) کنید، مثال:

$ordered = $amdCache->getScopeGroup( "banned_users", "user_24" );
array(
    "ID" => 24,
    "priority" => 12,
    "email" => "john.blow@gmail.com"
)

اگر عنصر (element) مشخص شده وجود نداشته باشد، یک آرایه خالی دریافت خواهید کرد و هیچ خطایی رخ نخواهد داد.

به روزرسانی گروه ها

اگر نیاز به تغییر و بازنویسی مقدار یک گروه با مقدار دلخواه خود دارید، باید از متد updateScopeGroup استفاده کنید. نام گروه و مقدار جدید را به این متد ارسال (pass) کنید. مقدار جدید می‌تواند یک آرایه، عدد، رشته (string) یا هر نوع دیگری باشد، از جمله کلاس و شی (object).

# Clear group value to an empty array
$amdCache->updateScopeGroup( "banned_users", [] );

# Change group value to a new string
$amdCache->updateScopeGroup( "data", "Hello world" );

توجه: با تغییر نوع یا ساختار گروه، ممکن است نتوانید از روش‌های مدیریت گروه ها مانند setScopeGroup استفاده کنید. اگر نیاز به سازگاری کامل دارید، باید از یک آرایه خالی یا یک آرایه ایندکس دار (indexed) به عنوان مقدار جدید استفاده کنید.

حذف گروه ها

ممکن است نیاز به حذف گروه‌ها یا عناصر آنها داشته باشید. برای این کار، کافی است از متد removeScopeGroup استفاده کنید. این متد می‌تواند یک گروه مشخص یا یک عنصر درون آن گروه را حذف کند. با ارسال (pass) نام عنصر مورد نظر به پارامتر $id، می‌توانید آن عنصر را حذف کنید (اگر وجود داشته باشد). همچنین می‌توانید مقدار null را ارسال کنید تا کل گروه حذف شود.

# Delete the whole group
$amdCache->removeScopeGroup( "banned_users", null );

# The default value for the second parameter is null,
# so you can leave it empty without passing it
$amdCache->removeScopeGroup( "banned_users" );

# Delete 'user_24' element from 'banned_users' group
$amdCache->removeScopeGroup( "banned_users", "user_24" );

کش ها

درحال حاضر سه نوع روش برای ذخیره سازی کَش ها در نظر گرفته شده است:

  • کش:
    این متغیر داخلی برای ذخیره آبجکت های PHP (اعداد، رشته‌ها، کلاس‌ها و غیره) است که به مشابه گروه‌ها و scope ها عمل می‌کنند، با این تفاوت که می‌توانید هر نوع شیء را به صورت جداگانه ذخیره کنید.
    در این روش تمامی اطلاعات ذخیره شده پس از اتمام نشست (در هر درخواست HTTP) از بین خواهند رفت، از همین جهت تنها برای کش های موقت از این روش استفاده کنید. برای تنظیم کش های سفارشی، از متد setCache استفاده کنید:
    # Cache `WP_User` object
    $amdCache->setCache( "marked_user", get_user_by( "ID", 10 ) );
    
    # Cache custom string
    $amdCache->setCache( "user_token", "5Umyr5gtokenMjXH61" );
    
    # Cache unset value
    $amdCache->setCache( "current_theme", null );
  • کوکی:
    کوکی‌ها بلوک‌های کوچکی از داده‌ها هستند که توسط سرور ها ایجاد می‌شوند در حینی که کاربر از یک وب‌سایت بازدید می‌کند، در کامپیوتر آن کاربر ذخیره می‌شوند. تنها مقادیر متنی (اعداد و رشته‌ها) در کوکی‌ها مجاز هستند. برای افزودن یک کوکی، متد setCache را فراخوانی کنید و زمان انقضا را به صورت ثانیه ارسال کنید. به عنوان مثال، اگر نیاز به افزودن یک کوکی برای یک ساعت دارید، زمان انقضا را 3600 (ثانیه) قرار دهید:
    # Keep user logged in for an hour
    $amdCache->setCache( "user_token", "5Umyr5gtokenMjXH61", 3600 );
  • نشست ها (session):
    نشست‌ها تقریباً مانند کوکی‌ها عمل می‌کنند، با این تفاوت که موقت هستند و پس از مدتی یا با تغییرات شبکه از بین می‌روند. این یک روش خوب برای ذخیره داده‌هایی مانند آدرس IP یا توکن کاربر برای شناسایی کاربر است. تغییر نشست‌ها با استفاده از متد setSession امکان پذیر است:
    # Keep user logged in for a short while with session
    $amdCache->setSession( "user_token", "5Umyr5gtokenMjXH61" );

حذف کش ها

حذف کش های موجود می‌تواند به بهبود عملکرد سرور شما کمک کند. اگر نیازی به کش های ثبت شده ندارید، می‌توانید همه آن‌ها را حذف کنید و یا مشخص کنید کش مورد نظر در کدام‌ دسته حذف شود:

# Remove all of them (scope cache, cookie and session)
$amdCache->removeCache( "user_token" );

# Remove specified item only from cookies
$amdCache->removeCookie( "user_token" );

قالب های زمانی

قالب های زمانی آرایه ای از قالب های آماده هستند که به شما کمک می‌کنند به جای محاسبه زمان دقیق انقضا کوکی ها از قالب ها استفاده کنید.

شما می‌توانید قالب های زمانی را در اعداد مورد نظر ضرب کنید تا زمان مورد نظر خود را ایجاد کنید و یا می‌توانید با جمع آنها با یکدیگر ترکیب های مورد نظر خود را ایجاد کنید. این اعداد مدت زمان اعتبار کوکی هستند، برای مثال اگر زمان انقضا کوکی را 3600 (ثانیه) قرار دهید کوکی پس از گذشت 1 ساعت منقضی خواهد شد.

# 1 day
$one_day = $amdCache::STAMPS["day"];

# 10 hours
$ten_hours = $amdCache::STAMPS["hour"] * 10;

# 30 Minutes
$thirteen_minutes = $amdCache::STAMPS["minute"] * 30;

# Combine two stamp, e.g, for 10 hours and 30 minutes:
$combination = $ten_hours + $thirteen_minutes;

ثبت کوکی برای 15 روز

# 15 days
$expire_time = $amdCache::STAMPS["day"] * 15;

# Save theme for 15 days
$amdCache->setCache( "theme", "dark", $expire_time );

پیشوند

پیشوند ها برای جلوگیری از تداخل نام کوکی ها با کوکی های دیگر سایت استفاده شده اند.

# "amd_theme"
$cookie_key = $amdCache::PREFIX . "theme";

توجه: لطفا در نظر داشته باشید که این توضیحات تنها برای اطلاعات شما است و نیازی به اضافه کردن پیشوند به کلید های کش ها نیست، چرا که در متد هایی مانند setCache و setCookie به طور خودکار پیشوند اضافه شده است.

پیشفرض ها

پیشفرض ها یک روش برای نگهداری تنظیمات پیشفرض و بازگردانی آنها در زمان مشخص هستند. پیشفرض ها معمولا برای ذخیره سازی تنظیمات پیشفرض استفاده می‌شوند تا درصورت نبود تنظیمات سفارشی از آنها استفاده شود. با استفاده از متد setDefault می‌توانید پیشفرض ها را تعریف و با استفاده از متد getDefault آنها را بخوانید.

# Set default value
$amdCache->setDefault( "default_theme", "light" );

# Get registered value
$value = $amdCache->getDefault( "default_theme" );

همچنین می‌توانید هنگام خواندن مقادیر پیشفرض یک مقدار پشتیبان نیز به آن اضافه کنید تا درصورت در دسترس نبودن مقدار پیشفرض، از مقدار پشتیبان استفاده کنید:

# Get registered value or backup value instead
$value = $amdCache->getDefault( "default_key", "Backup value" );