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