12.php外观模式

    构建中间层次,当数据要进行转化保存为其他形式,使用静态方法并创建客户端统一调用。

<span style="font-family:Courier New;font-size:14px;"><?php
/* 
 * 对象中保存了自己的信息,但有不同的格式
 *  */
class Book{
   public $name;
   public $author;
   public $message = array();

   function __construct($name, $author, $message){
       $this->name = $name;
       $this->author = $author;
       $this->message = $message;
   }
}

/* 
 * 将所有的数据都转化为大写
 *
 *  */
class Transform{
    // 对字符串数据进行转化
    public static function StrToUpper(Book $obj, $name){
        $obj->$name = strtoupper($obj->$name);
    }
    
    // 将数组数据转化为大写
    public static function ArrToUpper(Book $obj, $type){
        $obj->$type = array_map('strtoupper', $obj->$type); 
    } 
}


/* 
 * 将数据写入文件
 *  
 *  */
class ToFile{
    public static function createFile(Book $book, $file){
        $str = '';
        foreach ($book as $name=>$value){
            if(is_array($value)){
                $str .= implode(';', $value);
            }else{
                $str .= "$name:$value\n";
            }
        }
        
        file_put_contents($file , $str);
    }
}

/* 
 * 调用入口
 *  */
class MyClient{
    public static function clent(Book $book){
        Transform::StrToUpper($book, 'name');
        Transform::ArrToUpper($book, 'message');
        
        ToFile::createFile($book, 'b.txt');
    }
}

$message = array('wat It Means', 'Brr', 'GoodBye');
$name = "Waste of a Rib";
$num = 799;
$book = new Book($name, $num, $message);

MyClient::clent($book);
</span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值