class foo{
function __construct(
public $bar,
protected $bat,
private $baz,
){}
function getBar(){return $this->bar;}
function getBat(){return $this->bat;}
function getBaz(){return $this->baz;}
}
//Create Object
$foo = new foo(bar:"bar", bat:"bat", baz:"baz");
//Object => JSON
$fooJSON = json_encode(serialize($foo));
print_r($fooJSON);
// "O:3:\"foo\":3:{s:3:\"bar\";s:3:\"bar\";s:6:\"\u0000*\u0000bat\";s:3:\"bat\";s:8:\"\u0000foo\u0000baz\";s:3:\"baz\";}"
// Important. In order to be able to unserialize() an object, the class of that object needs to be defined.
# More information here: https://www.php.net/manual/en/language.oop5.serialization.php
//JSON => Object
$fooObject = unserialize(json_decode($fooJSON));
print_r($fooObject);
//(
# [bar] => bar
# [bat:protected] => bat
# [baz:foo:private] => baz
# )
//To use some functions or Properties of $fooObject
echo $fooObject->bar;
// bar
echo $fooObject->getBat();
// bat
echo $fooObject->getBaz();
// baz
5条答案
按热度按时间41zrol4v1#
这个应该可以了!
这里有一个例子
如果您希望输出为Array而不是Object,请将
true
传递给json_decode
关于json_encode()的更多信息
另请参阅:json_decode()
fkaflof62#
对于大规模应用程序,为了获得更好可扩展性,请使用带有封装字段的oop样式。
(新的水果);//输出:
PHP上的真实的Gson:-
7lrncoxx3#
jfewjypa4#
PHP 8-代码:
mkshixfv5#
我提出了一个解决这个问题的方法。我的方法是:
1 -创建一个抽象类,其中包含一个使用正则表达式将对象转换为数组(包括私有属性)的方法。2 -将返回的数组转换为json。
我使用这个抽象类作为我所有域类的父类
类代码: