Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将$this分配给从memcache加载的另一个对象可以吗?_Php_Oop_Memcached - Fatal编程技术网

Php 将$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;您的代码

将$this分配给构造函数中从memcache加载的另一个对象可以吗? 我主要担心的是性能和记忆力

我是这样想的:

function __construct($userid){
   global $memcachedvar;

   if($userobject = $memcachedvar->get($userid){
      $this = $userobject;
   } 
}
这是一种糟糕的设计模式吗?

来自评论:


PHP禁止在对象中的任何位置重新分配
$this
;您的代码将触发一个致命错误。当构造函数被调用时,内存将被分配给一个全新的对象,并且(无论如何根据引擎)将其换成另一个对象是不合适的。-


对象本身不应负责缓存。如果您需要此类功能-添加另一层,该层将实例化新对象或从mcd检索一个对象。-


@BoltClock和@zerkms给出了很好的评论。显然,这个构造函数实际上是不可能的。

不,它不行。事实上,它是无效的


$this
很神奇,不能重新分配。

PHP禁止在对象中的任何位置重新分配
$this
;您的代码将触发一个致命错误。在调用构造函数时,内存已经分配给了一个全新的对象,并且(根据引擎的说法)将其换成另一个对象是不合适的。对象本身不应该负责缓存。如果您需要此类功能,请添加另一层,该层将实例化新对象或从mcd检索一个。@BoltClock和@zerkms谢谢!我将创建一个包装器来调用恢复对象