经过长时间学习PHP JSON数组对象数组,于是和大家分享一下,看完本文你肯定有不少收获,希望本文能教会你更多东西。学习PHP JSON数组对象数组时,,这里将介绍PHP JSON数组对象数组问题的解决方法,在这里拿出来和大家分享一下。
编写 Hello 的 POJO,一个 Hello 接口,两个类实现这个接口的 sayHello() 方法。其中,中文版 CnHello 类,显示中文问候;英文 EnHello 类,显示英文问候。
自己看代码吧,很简单:
- <?php
- /**
- * @author 左洸,http://www.blogjava.net/myqiao
- */
- interface Hello {
- public function sayHello();
- }
- //中文版
- class EnHello implements Hello{
- private $msg;
- function getMsg(){
- return $this->msg;
- }
- function setMsg($value){
- $this->msg=$value;
- }
- function sayHello(){
- echo "English Version:" . $this->msg;
- }
- }
- //英文版
- class CnHello implements Hello{
- private $msg;
- function getMsg(){
- return $this->msg;
- }
- function setMsg($value){
- $this->msg=$value;
- }
- function sayHello(){
- echo "中文版" . $this->msg;
- }
- }
- ?>
测试。为类工厂指定上述配置文件。我们可以看见,对配置文件里的不同ID,返回了不同的类实例。调用每个实例的方法,分别输出了中文问候和英文问候。可见,我们只需要改变配置文件的内容,就可以返回不同的类实例,而不需修改程序源代码。这就实现了简单的 IOC 或者 DI。#t#
- //作者:左洸
- //http://www.blogjava.net/myqiao
- //备注使用双反斜杆
- [
- //英文版配置
- {
- //类ID,方便工厂查找
- "id": "enHello",
- //类名
- "class_name":"EnHello",
- //类文件
- "class_file":"Hello.php",
- //属性设置
- "properties":[
- {
- "name":"msg",
- "value":"Hello World!"
- }
- ]
- },
- //中文版配置
- {
- "id": "cnHello",
- "class_name":"CnHello",
- "class_file":"Hello.php",
- "properties":[
- {
- "name":"msg",
- "value":"世界你好!"
- }
- ]
- }
- ]
类工厂闪亮登场。实现了一些简单功能,能够解析指定的配置文件,并根据配置文件生成类,同时设置指定的属性值,注释很详细,我就不多解释了。代码如下:
- <?php
- include_once("ClassFactory.php");
- $factory = new ClassFactory("config.json");
- $hello=$factory->getBean("enHello");
- echo $hello->sayHello() .'<br>';
- $hello=$factory->getBean("cnHello");
- echo $hello->sayHello();
- ?>
最后说一下,PHP JSON数组对象数组是动态语言,利用一些语言特性,实现起来很简单,也没用到反射之类的概念。要是用 Java 实现可能要复杂点。