<?php
/**
* __ _ ___ ___ ___ ___ ___ ____ _ __ ___ ___
* / _` |/ / / __/ _ \ / _ \ / / / __/| '_ ` _ \ / /
* | (_| |\ \| (_| (_) | (_) |\ \ | (__ | | | | | |\ \
* \__,_|/__/ \___\___/ \___/ /__/ \___\|_| |_| |_|/__/
*
*
************************************************************************************
* @ASCOOS-NAME : ASCOOS CMS 24' *
* @ASCOOS-VERSION : 24.0.0 *
* @ASCOOS-CATEGORY : Framework (Frontend and Administrator Side) *
* @ASCOOS-CREATOR : Drogidis Christos *
* @ASCOOS-SITE : www.ascoos.com *
* @ASCOOS-LICENSE : [Commercial] http://docs.ascoos.com/lics/ascoos/AGL.html *
* @ASCOOS-COPYRIGHT : Copyright (c) 2007 - 2024, AlexSoft Software. *
************************************************************************************
*
* @package : ASCOOS FRAMEWORK Examples
* @subpackage : Handles File-based Cache.
* @source : afw-examples/classes/TCacheHandler/TCacheFileHandler.php
* @fileNo :
* @version : 24.0.7
* @created : 2024-07-01 20:00:00 UTC+3
* @updated : 2024-12-18 07:00:00 UTC+3
* @author : Drogidis Christos
* @authorSite : www.alexsoft.gr
* @license : AGL-F
*
* @since PHP 8.2.0
*/
declare(strict_types=1);
require_once "../../autoload.php";
use ASCOOS\FRAMEWORK\Kernel\{
Core\TObject,
Cache\Files\TCacheFileHandler
};
class TExampleObject extends TObject
{
protected $cacheHandler;
/**
* Constructor.
*
* @desc <English> Initialize the class with given properties.
* @desc <Greek> ??????????? ??? ????? ?? ??? ??????????? ?????????.
*
* @param array $properties <English> An associative array of properties to initialize the class with.
* <Greek> ???? ????????????? ??????? ????????? ??? ??? ???????????? ??? ??????.
*/
public function __construct(array $properties = [])
{
global $conf;
parent::__construct($properties);
$this->cacheHandler = new TCacheFileHandler($conf['cache_path'], 3600, ['useCompression' => true]);
}
/**
* Fetch data from cache or source.
*
* @desc <English> Fetch data from the cache if available, or retrieve from the source.
* @desc <Greek> ?????? ???????? ??? ??? cache ??? ????? ????????? ? ??? ??? ????.
*
* @param string $cacheKey <English> The key for the cache.
* <Greek> ?? ?????? ??? ??? cache.
* @return mixed <English> The fetched data.
* <Greek> ?? ?????????? ????????.
*/
public function fetchData(string $cacheKey): mixed
{
$cachedData = $this->cacheHandler->checkCache($cacheKey);
if ($cachedData) {
return $cachedData;
}
// Simulate data retrieval from a data source (e.g., database)
$data = ['data' => 'sample data'];
// Save data to cache
$this->cacheHandler->saveCache($cacheKey, $data);
return $data;
}
}
/*
<English> Example of use the TExampleObject class
<Greek> ?????????? ?????? ??? ?????? TExampleObject
*/
$example = new TExampleObject([
'config' => [
'extensions' => [
'subExtension1' => ['version' => '1.0.0'],
'subExtension2' => ['enabled' => true]
],
'newProperty' => 'newValue'
]
]);
/*
<English> Get data using cache.
<Greek> ???????? ????????? ??????????????? ??? cache.
*/
$data = $example->fetchData('example_key');
print_r($data);
/*
<English> Get a deep property 'version' for 'subExtension1' in the 'extensions' array.
<Greek> ???????? ???? ?????? ????????? 'version' ??? ?? 'subExtension1' ???? ?????? 'extensions'.
*/
$version = $example->getDeepProperty(['config', 'extensions', 'subExtension1', 'version']);
echo "Version: $version\n";
/*
<English> Get a deep property 'enabled' for 'subExtension2' in the 'extensions' array.
<Greek> ???????? ???? ?????? ????????? 'enabled' ??? ?? 'subExtension2' ???? ?????? 'extensions'.
*/
$enabled = $example->getDeepProperty(['config', 'extensions', 'subExtension2', 'enabled']);
echo "Enabled: " . ($enabled ? 'true' : 'false') . "\n";
/*
<English> Get a deep property 'newProperty' at the 'config' level.
<Greek> ???????? ???? ?????? ????????? 'newProperty' ??? ??????? ??? 'config'.
*/
$newProperty = $example->getDeepProperty(['config', 'newProperty']);
echo "New Property: $newProperty\n";
/*
<English> Print the properties for control
<Greek> ???????? ??? ????????? ??? ??????
*/
print_r($example->getProperties());
$example->Free($example);
?>
|