Last active
June 2, 2020 09:49
-
-
Save kvnZero/80330ad614820a6eca1a4b3d019cd264 to your computer and use it in GitHub Desktop.
PHP把数组转换成对象操作
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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