PHP Classes

File: demo.php

Recommend this page to a friend!
  Classes of Xavier Pérez   XCache   demo.php   Download  
File: demo.php
Role: Example script
Content type: text/plain
Description: Demo.php
Class: XCache
Store and retrieve data from different cache types
Author: By
Last change: Update of demo.php
Date: 4 months ago
Size: 3,917 bytes
 

Contents

Class file image Download
<?php
require 'XCache.php';
/**
 * Example using xcache in a class
 *
 * The static var xcache MUST TO EXISTS, this obtains the class itself, and it's used to call any method inside the class.
 *
 * The
 */
class testCache
{
   
// MUST TO EXISTS
   
public static $xcache='';

    public function
__construct()
    {
       
// xcache MUST TO BE ASSIGNED TO THIS CLASS
       
self::$xcache=$this;
    }

    public function
dumpServerVar($item)
    {
       
$XCache = XCache::getXCInstance();
        return
$XCache->cache('cache_test','MyTestInfo','MyTestInfoID',get_class($this),'_dumpServerVar',$item);
    }

    public function
_dumpServerVar($item)
    {
        if (isset(
$_SERVER[$item]))
            return
$_SERVER[$item];
        else
            return
null;
    }

   
/**
     * Function to call other class within XCCache
     *
     * @param type $date
     * @return type
     */
   
public function otherClassCache($date)
    {
       
// xcache MUST TO BE ASSIGNED TO A CLASS
       
$XCache = XCache::getXCInstance();
        return
$XCache->cache('cache_test','MyExternallClassCall','otherClass','otherClassCache','otherMethod',$date);
    }
}

/**
 * Another class to show how can be called any external class
 */
class OtherClassCache
{
   
// MUST TO EXISTS
   
public static $xcache;

    public function
__construct()
    {
       
// xcache MUST TO BE ASSIGNED TO THIS CLASS
       
self::$xcache = $this;
    }
   
    function
otherMethod($date)
    {
        return
"External call to other class successfull on $date";
    }
}

/**
 * Load the test class
 */
$testCache = new testCache();

/**
 * Example loading dumServerVar, this method calls XCache->cache.
 * XCache->cache load _dumpServerVar method if it's not cached through xcache static var.
 */
echo 'Cache $_SERVER[\'REQUEST_TIME\'] : '.$testCache->dumpServerVar('REQUEST_TIME')."<br />";
echo
'$_SERVER[\'REQUEST_TIME\'] date '.date('Y-m-d H:i:s',$testCache->dumpServerVar('REQUEST_TIME'))."<br />";
echo
'$_SERVER[\'REQUEST_TIME\'] cached '.(time()-$testCache->dumpServerVar('REQUEST_TIME')).' seconds ago'."<br />";
echo
'This cache expires each: '.XCache::getXCInstance()->getCacheItemExpiration('cache_test','MyTestInfo','otherClass').' seconds'."<hr />";

/**
 * Example loading other class inside testCache, this method calls XCache->cache.
 * XCache->cache load otherClassCache->otherMethod method if it's not cached through xcache static var.
 */
echo 'Cache other class method : '.$testCache->otherClassCache(date('Y-m-d H:i:s'))."<br />";
echo
'This cache expires each: '.XCache::getXCInstance()->getCacheItemExpiration('cache_test','MyExternallClassCall','MyTestInfoID').' seconds'."<hr />";

/**
 * Example using increment
 */
echo 'Cache & increment test num : '.XCache::getXCInstance()->incCache('cache_test','MyTestCount','MyTestCountID',1)."<hr />";

/**
 * Example saving a fixed value
 */
$randNum = rand(1000,9999);
echo
'Cache a rand value : '.XCache::getXCInstance()->cache('cache_test','MyTestValue','RandVar',$randNum)."<br />";
echo
'This cache expires each: '.XCache::getXCInstance()->getCacheItemExpiration('cache_test','MyTestValue','RandVar').' seconds'."<hr />";

/**
 * Example saving an object
 */
$myObject = new stdClass();
$myObject->id = 24;
$myObject->name = 'Product name';
$myObject->qty_random = rand(1,1000);
$myObject->date_insert = date('Y-m-d H:i:s');

echo
'Cache an object :';
var_dump(XCache::getXCInstance()->cache('cache_test','MyTestValue','MyObject',$myObject));
echo
"<br />";
echo
'This Object cache expires each: '.XCache::getXCInstance()->getCacheItemExpiration('cache_test','MyTestValue','MyObject').' seconds'."<hr />";

/**
 * Memory usage
 */
echo "Memory used: ".number_format(memory_get_usage()/1000,0)."Kb";
?>
<br />
<br />
Press 'refresh' to see how the cache changes ...
<input type='button' value='Refresh' onclick='location.reload();'>