Php 将$this分配给从memcache加载的另一个对象可以吗?
将$this分配给构造函数中从memcache加载的另一个对象可以吗? 我主要担心的是性能和记忆力 我是这样想的:Php 将$this分配给从memcache加载的另一个对象可以吗?,php,oop,memcached,Php,Oop,Memcached,将$this分配给构造函数中从memcache加载的另一个对象可以吗? 我主要担心的是性能和记忆力 我是这样想的: function __construct($userid){ global $memcachedvar; if($userobject = $memcachedvar->get($userid){ $this = $userobject; } } 这是一种糟糕的设计模式吗?来自评论: PHP禁止在对象中的任何位置重新分配$this;您的代码
function __construct($userid){
global $memcachedvar;
if($userobject = $memcachedvar->get($userid){
$this = $userobject;
}
}
这是一种糟糕的设计模式吗?来自评论:
PHP禁止在对象中的任何位置重新分配
$this
;您的代码将触发一个致命错误。当构造函数被调用时,内存将被分配给一个全新的对象,并且(无论如何根据引擎)将其换成另一个对象是不合适的。-
对象本身不应负责缓存。如果您需要此类功能-添加另一层,该层将实例化新对象或从mcd检索一个对象。-
@BoltClock和@zerkms给出了很好的评论。显然,这个构造函数实际上是不可能的。不,它不行。事实上,它是无效的
$this
很神奇,不能重新分配。PHP禁止在对象中的任何位置重新分配$this
;您的代码将触发一个致命错误。在调用构造函数时,内存已经分配给了一个全新的对象,并且(根据引擎的说法)将其换成另一个对象是不合适的。对象本身不应该负责缓存。如果您需要此类功能,请添加另一层,该层将实例化新对象或从mcd检索一个。@BoltClock和@zerkms谢谢!我将创建一个包装器来调用恢复对象