2010-09-07 63 views
2

嗨我試圖開發一個OOP PHP驅動的博客。林新的OOP方式在PHP中,所以它進行得非常緩慢。我有一個類的博文中我已經創建了行的私有變量在我的博客領域,他DB和getter和setter它們例如:創建一個OOP PHP博客

function getCreated() { 
    return $this-$created; 
} 

function setCreated($created) { 
    $this->$created = $created; 
} 

是這樣做的方式?我認爲我在正確的軌道上,但林不知道。有沒有人有任何輸入?也許有關於如何創建博客oop php風格的很好的教程的一些技巧。在net.tuts找到一個,但我不是很喜歡它。謝謝!

問候

+0

你爲什麼不使用WordPress的東西? – jigfox 2010-09-07 12:23:22

+1

編程的核心原則之一是不要重新發明輪子。除非您的博客引擎正在解決博客引擎問題領域尚未解決的問題,爲什麼不採用現成的引擎呢? – Gordon 2010-09-07 12:24:34

+1

@ jigfox和@gordon:通常我不會這樣做,但這是我採取強制性課程的一部分。這項任務是建立一個博客OOP PHP風格。 – Tim 2010-09-07 12:46:45

回答

6

你靠近,試圖

function getCreated() { 
    return $this->created; 
} 

function setCreated($created) { 
    $this->created = $created; 
} 
+0

感謝您的反饋我應該知道,我們可以稱之爲小錯字:)。有一件事,你將如何創建這個構造函數?我在想這樣的事情:public function __construct($ id,$ created,$ modified,$ author,$ title,$ body){ \t \t $ this - > $ id = \t} – Tim 2010-09-07 12:43:13

+0

並且錯誤: $ this - > $ id'應該是'$ this-> id' – jigfox 2010-09-07 13:40:37

+1

是的,只需要擺脫財產面前的美元符號。 $ this - > $ id將查找與您不想要的變量$ id中的值同名的屬性。 – Zoidberg 2010-09-07 13:48:18

5

就個人而言,我避免getter和設置,只是使用的公共屬性。然後我使用__set()魔術方法來偵聽正在設置的屬性並將該密鑰添加到專用$dirty陣列。然後我可以在保存記錄時循環這些。例如:

class BlogPost { 

    public $id; 
    public $title; 
    public $content; 

    private $dirty; 

    function __set($key, $value) { 
     $this->$key = $value; 
     $this->dirty[] = $key; 
    } 

    function save() { 
     if (isset($this->id) && intval($this->id) > 0) { 
      // do UPDATE query 
     } else { 
      // do INSERT query 
     } 
    } 
} 

然後使用:

$id = (isset($_GET['id'])) ? intval($_GET['id']) : null; 

$post = new BlogPost(); 
$post->title = $_POST['title']; 
$post->content = $_POST['content']; 
$post->save(); 

非常簡陋,但應該給你如何實現這個理論爲自己的想法。