Welcome to the website navigation,本站只接受合法正规的企业网站,欢迎站长们提交你的网站获得展示和流量有任何问题请联系站长,欢迎大家加入本站。

                
提交网站
  • 网站:76083
  • 待审:5
  • APP:577
  • 文章:304411
  • 会员:56004
文字内链包年1000元 文字内链包年1000元 文字内链包年1000元 AI办公网站 AI绘画工具 AIchat

名站导航为爱好php程序的朋友们提供php相关的教程知识。

我们讨论了关于IoC控制反转的设计原则,现在我们用PhP程序来实现IoC设计原则,加深对这个概念的理解。npHAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

首先编写 Fruit 的 POJO 和 Fruit 接口。继承 Fruit 接口生成两个类 Apple 和 Banana,这两个类都实现了接口的 showColor() 方法。npHAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

Fruit.php

<?php
	
/**
 *  http://www.mzdh.net/
 */
interface Fruit {
    public function showColor();
}
class Apple implements Fruit {
	private $color;
    function getColor(){
        return $this->color;
    }
    function setColor($value){
        $this->color=$value;
    }
    
    function showColor(){
        echo "Apple Color:" . $this->color;
    }
}
class Banana implements Fruit {
    private  $color;
    function getColor(){
        return $this->color;
    }
    function setColor($value){
        $this->color=$value;
    }
    function showColor(){
        echo "Banana Color:" . $this->color;
    }
}
?>

ClassFactory.php

类工厂实现了一些简单功能,能够解析指定的配置文件,并根据配置文件生成类,同时设置指定的属性值:npHAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

<?php
	
/**
 *  http://www.mzdh.net/
 */
class ClassFactory {
    private $arr_conf;
    function ClassFactory($config_file){
        //读取配置文件内容
        $handle = fopen($config_file, r);
        $content = fread($handle, filesize($config_file));
        fclose($handle);
        //去除注释
        $content=preg_replace("<\/\/.*?\s>","",$content);
        //转成数组
        $this->arr_conf=json_decode($content,true);
    }
     function getBean($class_id){
        //查找匹配 $class_id 的类
        while(true){
            //挨个测试
            $conf=each($this->arr_conf);
            //找不到,返回 null
            if($conf==false) return null;
            if(strcmp($class_id,$conf["value"]["id"])===0){
                //如果匹配则装入类文件
                include_once($conf["value"]["class_file"]);
                //生成类的具体实例操作
                //print_r($conf["value"]["class_name"]);
                $obj=new $conf["value"]["class_name"]();
                //查找被设置的属性
                $arr_prop=$conf["value"]["properties"];
                while($prop=each($arr_prop)){
                    //生成属性的设置方法 setXXX ,第一个字母大写
                    $set_method="set". ucwords($prop["value"]["name"]);
                    //调用设置方法,并设置预设值
                    $obj->$set_method($prop["value"]["value"]);
                }
                //找到第一个,返回具体实例操作
                return $obj;
            }
        }
    }
}
?>

config.json

//备注使用双反斜杆
[
    {
        //类ID,方便工厂查找
        "id": "Apple",
        //类名
        "class_name":"Apple",
        //类文件
        "class_file":"Fruit.php",
        //属性设置
        "properties":[
            {
                "name":"color",
                "value":"Red"
            }
        ]
    },
    {
        "id": "Banana",
        "class_name":"Banana",
        "class_file":"Fruit.php",
        "properties":[
            {
                "name":"color",
                "value":"Yellow"
            }
        ]
    }
]

test.php

为类工厂指定上述配置文件。我们可以看见,对配置文件里的不同ID,返回了不同的类具体实例操作。调用每个具体实例操作的方法,分别输出了Red和Yellow。可见,我们只需要改变配置文件的内容,就可以返回不同的类具体实例操作,而不需修改程序源代码。这就实现了简单的 IOC 或者 DI。npHAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

<?php
include_once("ClassFactory.php");
$factory = new ClassFactory("config.json");
$fruit = $factory->getBean("Apple");
echo $fruit->showColor() .'<br />';
$fruit = $factory->getBean("Banana");
echo $fruit->showColor() .'<br />';
?>

PhP程序是动态语言,利用一些语言特性,实现起来很简单,也没用到反射之类的概念。npHAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

程序运行结果npHAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

Apple Color:Red
Banana Color:Yellow


npHAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

名站网址导航

几个PhP程序的静态方法的程序例子npHAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

静态方法和非静态方法之间有一个很重要的区别,就是在调用静态方法时,我们不需要创建类的具体实例操作。npHAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

好了关于php程序的知识就说到这里希望可以帮助需要的朋友。,

标签:

分享到:

  admin

注册时间:

网站:0 个   APP:3 个  文章:0 篇

  • 76083

    网站

  • 577

    APP

  • 304411

    文章

  • 56004

    会员

赶快注册账号,推广您的网站吧!
文章分类
热门网站
最新入驻APP小程序

宝贝市场2023-02-08

宝贝市场——买手和卖家商品展示

夺宝助手2023-02-08

夺宝助手小程序,查看每日快夺宝平

查诚信2023-02-08

查诚信是一款免费的商业查询工具

车价天天报2023-02-08

快速连接汽车销售,获知汽车最新报

考勤助理小程序2023-02-08

上班签到考勤,实时定位,后台轻松

汽车报价大全查询2023-02-08

汽车报价大全查询提供最新汽车市