漫談PHP JSON數(shù)組對(duì)象數(shù)組介紹研究
經(jīng)過(guò)長(zhǎng)時(shí)間學(xué)習(xí)PHP JSON數(shù)組對(duì)象數(shù)組,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會(huì)你更多東西。學(xué)習(xí)PHP JSON數(shù)組對(duì)象數(shù)組時(shí),,這里將介紹PHP JSON數(shù)組對(duì)象數(shù)組問(wèn)題的解決方法,在這里拿出來(lái)和大家分享一下。
編寫(xiě) Hello 的 POJO,一個(gè) Hello 接口,兩個(gè)類(lèi)實(shí)現(xiàn)這個(gè)接口的 sayHello() 方法。其中,中文版 CnHello 類(lèi),顯示中文問(wèn)候;英文 EnHello 類(lèi),顯示英文問(wèn)候。
自己看代碼吧,很簡(jiǎn)單:
- <?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;
- }
- }
- ?>
測(cè)試。為類(lèi)工廠指定上述配置文件。我們可以看見(jiàn),對(duì)配置文件里的不同ID,返回了不同的類(lèi)實(shí)例。調(diào)用每個(gè)實(shí)例的方法,分別輸出了中文問(wèn)候和英文問(wèn)候。可見(jiàn),我們只需要改變配置文件的內(nèi)容,就可以返回不同的類(lèi)實(shí)例,而不需修改程序源代碼。這就實(shí)現(xiàn)了簡(jiǎn)單的 IOC 或者 DI。#t#
- //作者:左洸
- //http://www.blogjava.net/myqiao
- //備注使用雙反斜桿
- [
- //英文版配置
- {
- //類(lèi)ID,方便工廠查找
- "id": "enHello",
- //類(lèi)名
- "class_name":"EnHello",
- //類(lèi)文件
- "class_file":"Hello.php",
- //屬性設(shè)置
- "properties":[
- {
- "name":"msg",
- "value":"Hello World!"
- }
- ]
- },
- //中文版配置
- {
- "id": "cnHello",
- "class_name":"CnHello",
- "class_file":"Hello.php",
- "properties":[
- {
- "name":"msg",
- "value":"世界你好!"
- }
- ]
- }
- ]
類(lèi)工廠閃亮登場(chǎng)。實(shí)現(xiàn)了一些簡(jiǎn)單功能,能夠解析指定的配置文件,并根據(jù)配置文件生成類(lèi),同時(shí)設(shè)置指定的屬性值,注釋很詳細(xì),我就不多解釋了。代碼如下:
- <?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();
- ?>
最后說(shuō)一下,PHP JSON數(shù)組對(duì)象數(shù)組是動(dòng)態(tài)語(yǔ)言,利用一些語(yǔ)言特性,實(shí)現(xiàn)起來(lái)很簡(jiǎn)單,也沒(méi)用到反射之類(lèi)的概念。要是用 Java 實(shí)現(xiàn)可能要復(fù)雜點(diǎn)。