定义在PHP中分配给变量的类的值。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定义在PHP中分配给变量的类的值。相关的知识,希望对你有一定的参考价值。
在php中,我可以使用\ArrayAccess来创建一个对象,这样它就可以被分配为变量(一个数组),但同时也可以执行一些其他的东西,是否可以对一个单值变量做同样的事情?
$a = new MyClass(5, "some other stuff")->print(); //Prints 'some other stuff'
$b = $a * 2;
echo $b; //Prints 10
我们的想法是,当变量被赋值时,第一个参数会被返回,但同时我可以用第二个参数做其他事情,到目前为止,我只用__invoke魔法方法来实现,但最终结果是这样的。
$a = new MyClass(5, "some other stuff")->print(); //Prints 'some other stuff'
$b = $a() * 2;
echo $b; //Prints 10
是否可以不使用__invoke方法?
答案
这是我使用 \ArrayAccess 的方法(以备不时之需)。
class mysqlK_customArray implements \ArrayAccess
private $storage = array();
private $queryk;
public function __construct($fetch_array, $query)
$this->queryk = $query;
$this->storage = $fetch_array;
public function offsetSet($key, $value)
if (is_null($key))
$this->storage[] = $value;
else
$this->storage[$key] = $value;
public function offsetExists($key)
return isset($this->storage[$key]);
public function offsetUnset($key)
unset($this->storage[$key]);
public function offsetGet($key)
if (! isset($this->storage[$key]))
return null;
$val = $this->storage[$key];
if (is_callable($val))
return $val($this);
return $val;
public function print()
echo $this->queryk.";";
return $this;
public function get()
return $this->storage;
可以这样使用。
$arr = new MySQLK_customArray(array("id" => 1),"SELECT * FROM Table LIMIT 1")->print(); //Prints 'SELECT * FROM Table LIMIT 1'
echo $arr['id']; //Prints 1
以上是关于定义在PHP中分配给变量的类的值。的主要内容,如果未能解决你的问题,请参考以下文章