Tôi có một lớp để tương tác với một máy chủ memcache. Tôi có các chức năng khác nhau để chèn, xóa và truy xuất dữ liệu. Nguyên mỗi chức năng thực hiện một cuộc gọi đến memcache_connect()
, tuy nhiên đó là không cần thiết, ví dụ .:Chia sẻ các biến giữa các hàm trong PHP mà không sử dụng các globals
mc->insert()
mc->get()
mc->delete()
sẽ làm cho ba kết nối memcache. Tôi làm việc này bằng cách tạo ra một cấu trúc cho lớp:
function __construct() {
$this->mem = memcache_connect(...);
}
và sau đó sử dụng bất cứ nơi nào $this->mem
tài nguyên là cần thiết, vì vậy mỗi trong ba chức năng sử dụng cùng một tài nguyên memcache_connect
.
Đây là alright, tuy nhiên nếu tôi gọi là lớp bên trong các lớp khác, ví dụ .:
class abc
{
function __construct() {
$this->mc = new cache_class;
}
}
class def
{
function __construct() {
$this->mc = new cache_class;
}
}
sau đó nó vẫn đang thực hiện hai memcache_connect
cuộc gọi, khi nó chỉ nhu cầu một.
Tôi có thể làm điều này với hình cầu nhưng tôi không muốn sử dụng chúng nếu tôi không phải.
Ví dụ globals thực hiện:
$resource = memcache_connect(...);
class cache_class
{
function insert() {
global $resource;
memcache_set($resource , ...);
}
function get() {
global $resource;
return memcache_get($resource , ...);
}
}
Sau đó, dù có bao nhiêu lần so với lớp được gọi là chỉ có sẽ là một cuộc gọi đến memcache_connect
.
Có cách nào để làm điều này hay tôi chỉ nên sử dụng hình cầu?
Đó là giải pháp hợp lý nhưng hãy đối mặt với nó, đó là toàn cầu. :) – cletus
Đây là những gì tôi muốn làm. Bạn không thể kiểm tra nó, nhưng chúng ta hãy trung thực, những người kiểm tra loại điều này anyway? –
Câu hỏi đặt ra là làm thế nào có thể kiểm tra ở lại phần còn lại của toàn bộ mã nếu một phần nhỏ không thể kiểm tra được. Hoặc làm thế nào bạn sẽ thực hiện một đối tượng MemCache mô phỏng cho các thử nghiệm khác? – okoman