Skip to content

Instantly share code, notes, and snippets.

@kvnZero
Last active June 2, 2020 09:49
Show Gist options
  • Save kvnZero/80330ad614820a6eca1a4b3d019cd264 to your computer and use it in GitHub Desktop.
Save kvnZero/80330ad614820a6eca1a4b3d019cd264 to your computer and use it in GitHub Desktop.
PHP把数组转换成对象操作
<?php
class Arr
{
private $arr = [];
public function __construct($arr = [])
{
// init array
if(is_array($arr)) {
$this->arr = $arr;
} else {
$this->arr = unserialize($arr);
}
}
public function __invoke($key)
{
// get array key
return $this->arr[$key];
}
public function __toString()
{
// return arr string save in mysql
return serialize($this->arr);
}
public function __get($name)
{
// return arr val
return $this->arr[$name];
}
public function __set($key, $val)
{
// set arr val
$this->arr[$key] = $val;
}
public function __isset($key)
{
// isset key result
return isset($this->arr[$key]);
}
public function __unset($key)
{
// unset arr key
unset($this->arr[$key]);
}
}
$arr = new Arr([]);
$arr('hello');
$arr->hello = 5;
var_dump((string)$arr);
unset($arr->hello);
var_dump($arr->hello);
$arr->world = 10;
var_dump((string)$arr);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment