2014-02-07 22 views
0

我需要重新構建頭文件和鏈接,所以我想創建一個我可以用於將來參考的類。如何鏈接方法並在方法內返回它們? OOP-PHP

我開始喜歡:

class HeadClas{ 


    public static $headprint; 


    function __construct(){ 

     $this->headprint = ""; 

    } 

    function addLinks(){ 
     $this->headprint .= "addLinks"; 
     return $this; 
    } 

    function addMeta(){ 
     $this->headprint .= "addMeta"; 
     return $this; 
    } 


    function printHead(){ 
     return $this->headprint; 
    } 
} 

在上述情況下,我需要做的

$print = new HeadClas; 

$print->addLinks()->addMeta(); 

,我想這樣做

$print = new HeadClas; 
$print->printHead(); 

我也嘗試

function printHead(){ 
    return $this->addMeta()->addLinks(); 
} 

但比我需要做的

$print->printHead()->headprint; 

缺少什麼我在這裏? 任何幫助表示讚賞!

+1

使類字段不是靜態的,所以當你使用多個實例時不會弄亂事情。 – Bart

+0

我不明白這個問題。你在期待'$ print-> printHead()'做什麼?這個名字表明它應該打印某些東西,但它所做的只是返回屬性。你在某處丟失了一個「回聲」嗎? – Barmar

+0

我測試了你的代碼,它的工作原理是什麼?只是'print $ print-> printHead();' – Ergec

回答

1

首先,你應該使$headprint字段非靜態。使其成爲靜態使其成爲所有將來會產生不良結果的參考。

printHead()應該打印該字段的內容像方法名稱暗示的那樣。

class HeadClass { 
    public $headprint; 

    function __construct() { 
     $this->headprint = ""; 
    } 

    function addLinks() { 
     $this->headprint .= "addLinks"; 
     return $this; 
    } 

    function addMeta() { 
     $this->headprint .= "addMeta"; 
     return $this; 
    } 


    function printHead() { 
     $this->addLinks()->addMeta(); 
     echo $this->headprint; 
    } 
} 

$printer = new HeadClass(); 
$printer->printHead(); 
+0

我不想這樣做$ printer-> addLinks() - > addMeta() - > printHead();我想使用$ printer-> printHead();正如我問上面 – Benn

+0

我更新了我的答案。 – Bart

+0

不客氣。提供一種簡單的打印頭和現在提供的打印頭的方法可能會更好。現在這種方法有點誤導。 – Bart