示例#1
0
<?php

class DatabaseAccess
{
    public static $shouldCache = false;
    public function getData()
    {
        if (self::$shouldCache == true) {
            return 'data from cache';
        } else {
            return 'data from database';
        }
    }
}
// getting user data!
$db = new DatabaseAccess();
$data = $db->getData();
echo $data;
echo '<br>';
// getting a blog post, now we want caching
DatabaseAccess::$shouldCache = true;
$db1 = new DatabaseAccess();
$data = $db1->getData();
echo 'DB1 data: ' . $data;
echo '<br>';
DatabaseAccess::$shouldCache = false;
$db2 = new DatabaseAccess();
$data = $db2->getData();
echo 'DB2 data: ' . $data;
echo '<br>';
    public function getData()
    {
        if (self::$shouldCache == true) {
            return 'data from cache';
        } else {
            return 'data from database';
        }
    }
}
// Getting user data
$db = new DatabaseAccess();
$dataOriginal = $db->getData();
echo $dataOriginal;
echo '<br />';
// Getting a blog post
DatabaseAccess::$shouldCache = true;
$db1 = new DatabaseAccess();
$data = $db1->getData();
echo 'DB1 data: ' . $data;
echo '<br />';
// Get another blog post
$db2 = new DatabaseAccess();
$data = $db2->getData();
echo 'DB2 data: ' . $data;
echo '<br />';
// Look at original value again
echo 'DB-Original: ' . $dataOriginal;
// ###########################################################################################################################
// ##### BASICALLY, IF YOU UPDATE A STATIC PROPERTY ALL NEW INSTANTIATIONS OF THAT OBJECT WILL USE THAT UPDATED VALUE, #######
// ############### BUT ALL INSTANCES THAT WERE CREATED PRIOR TO THE CHANGE STILL HAVE THEIR OWN UNIQUE VALUE #################
// ###########################################################################################################################