У меня есть класс для взаимодействия с сервером memcache. У меня есть разные функции для вставки, удаления и извлечения данных. Первоначально каждая функция выполняла вызов memcache_connect()
, однако это было не нужно, например ::10000
mc->insert()
mc->get()
mc->delete()
сделает три подключения к memcache. Я работал над этим, создавая конструкцию для класса:
function __construct() {
$this->mem = memcache_connect( ... );
}
, а затем с помощью $this->mem
везде, где требовался ресурс, поэтому каждая из трех функций использует один и тот же ресурс memcache_connect
.
Это нормально, однако, если я вызову класс внутри других классов, например ::
class abc
{
function __construct() {
$this->mc = new cache_class;
}
}
class def
{
function __construct() {
$this->mc = new cache_class;
}
}
тогда он все еще делает два memcache_connect
вызова, когда только нужен один.
Я могу сделать это с глобалами, но я бы предпочел не использовать их, если мне не нужно.
Пример реализации глобалов:
$resource = memcache_connect( ... );
class cache_class
{
function insert() {
global $resource;
memcache_set( $resource , ... );
}
function get() {
global $resource;
return memcache_get( $resource , ... );
}
}
Тогда, независимо от того, сколько раз вызывается класс, будет только один вызов memcache_connect
.
Есть ли способ сделать это или я должен просто использовать глобалы?