ホームページ  >  記事  >  バックエンド開発  >  (9) オブジェクト指向設計原則 5

(9) オブジェクト指向設計原則 5

WBOY
WBOYオリジナル
2016-07-30 13:31:44968ブラウズ

1つ。オブジェクト指向の要約:
1. 高い抽象度は、高い要約につながります。
2. コードはドキュメントです。
2つ。オブジェクト指向の考え方で作成されたゲストブックの例:

message.php

<?php
/*
 * 留言实体类
 */
class message{
    public $name;
    public $email;
    public $content;
    public function __set($name,$value){
        $this->$name = $value;
    }

    public function __get($name){
        if (!isset($this->$name)){
            $this->$name = null;
        }
    }
}

gbookModel.php

<?php
/*
 * 留言本模型
 */
class gbookModel{
    private $bookPath;
    private $data;

    public function setBookPath($bookPath){
        $this->bookPath = $bookPath;
    }

    public function getBookPath(){
        return $this->bookPath;
    }

    public function open(){

    }

    public function close(){

    }

    public function read(){
        return file_get_contents($this->bookPath);
    }

    //写入留言
    public function write($data){
        $this->data= self::safe($data)->name."&".self::safe($data)->email."\r\nsaild:\r\n".self::safe($data)->content;
        return file_put_contents($this->bookPath,$this->data,FILE_APPEND);
    }

    public static function safe($data){
        $reflect = new ReflectionObject($data);
        $props = $reflect->getProperties();
        $messagebox = new stdClass();
        foreach($props as $prop){
            $ivar = $prop -> getName();
            $messagebox ->$ivar= trim($prop->getValue($data));
        }
        return $messagebox;
    }

    public function delete(){
        file_put_contents($this->bookPath,'it\'s empty now');
    }

}
leaveModel.php
<?php
//业务逻辑
class leaveModel{
    public function write(gbookModel $gb,$data){
        $book = $gb->getBookPath();
        $gb->write($data);
    }
}
view.php

<?php
include "gbookModel.php";
include "leaveModel.php";
include "message.php";
class authorControl{
    public function message(leaveModel $l,gbookModel $g,message $data){
        $l->write($g,$data);
    }

    public function view(gbookModel $g){
        return $g->read();
    }

    public function delete(gbookModel $g){
        $g->delete();
        echo self::view($g);
    }
}

//以下是测试
$message = new message();
$message->name = 'phper';
$message->email = 'test@test.com';
$message->content = 'love php';
$gb = new authorControl();
$pen = new leaveModel();
$book = new gbookModel();
$book->setBookPath('test.txt');
$gb->message($pen,$book,$message);
echo $gb->view($book);
$gb->delete($book);

著作権表示: この記事は、ブロガーによるオリジナルの記事であり、ブロガーの許可を得て転載を禁止します。

以上、5番目のオブジェクト指向設計原則(9)を内容面も含めて紹介しましたが、PHPチュートリアルに興味のある友人の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。