ذخیره و نگهداری اطلاعات به وسیله هسته کَش
با استفاده از این هسته میتوانید کوکی ها، نشست ها و کَش ها را مدیریت کنید. یکی دیگر از قسمت های این هسته، دامنه ها (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" );