2017-05-29 59 views
0

我認爲這是可能的PHP,但我有一些麻煩讓它工作。我試圖通過創建一個應該顯示在php類方法內部的html實例來儘量減少被複制的代碼量。這是我只想創建一次的部分。調用方法內部的方法,而這兩個方法都在相同的PHP類

public function display($dbCon){ 
    $content = $obj->content; 
    $contentSEO = $obj->contentSEO; 
    $contentLink = $obj->contentLink; 
     if(!empty($content) && !empty($contentSEO) && !empty($contentLink)){ 
      $content = str_replace("$contentSEO","<a href=\"$contentLink\"><small>$contentSEO</small></a>",$content); 
      printf("%s", $content); 
     } elseif(!empty($content) && empty($contentSEO) && !empty($contentLink)){ 
      $content = str_replace("$content","<a href=\"$contentLink\">$content</a>",$content); 
      printf("%s", $content); 
     } elseif(!empty($content) && !empty($contentSEO) && empty($contentLink)){ 
      $content = str_replace("$contentSEO","<small>$contentSEO</small>",$content); 
      printf("%s", $content); 
     } elseif(!empty($content) && empty($contentSEO) && empty($contentLink)){ 
      printf("%s", $content); 
     } else { 
      echo "Error"; 
     } 
    } 

現在這是一個類的內部,我希望以下方法在執行sql查詢後調用上面的這一個。我在這裏的目標是,如果我需要用相同的HTML調用一個類似的函數,我可以簡單地調用這個已經創建的函數,而不是重新編寫它。第二部分看起來像這樣。

public function content1($dbCon){ 
     if($res = $this->dbConnection->query("SELECT * FROM content WHERE status = '1' and id = '1'")) { 
      while($obj = $res->fetch_object()) { 
       $this->display($dbCon); 
      } 
     } 
    } 

現在簡單的方法是簡單地將它們都添加到相同的功能,這可以工作。如下面的例子。

public function content1($dbCon){ 
     if($res = $this->dbConnection->query("SELECT * FROM content WHERE status = '1' and id = '1'")) { 
      while($obj = $res->fetch_object()) { 
       $content = $obj->content; 
       $contentSEO = $obj->contentSEO; 
       $contentLink = $obj->contentLink; 
       if(!empty($content) && !empty($contentSEO) && !empty($contentLink)){ 
        $content = str_replace("$contentSEO","<a href=\"$contentLink\"><small>$contentSEO</small></a>",$content); 
        printf("%s", $content); 
       } elseif(!empty($content) && empty($contentSEO) && !empty($contentLink)){ 
        $content = str_replace("$content","<a href=\"$contentLink\">$content</a>",$content); 
        printf("%s", $content); 
       } elseif(!empty($content) && !empty($contentSEO) && empty($contentLink)){ 
        $content = str_replace("$contentSEO","<small>$contentSEO</small>",$content); 
        printf("%s", $content); 
       } elseif(!empty($content) && empty($contentSEO) && empty($contentLink)){ 
        printf("%s", $content); 
       } else { 
        echo "Error"; 
       } 
      } 
     } 
    } 

但是,這樣做會需要我總是複製和粘貼相同的代碼。何時需要。我寧願用查詢創建函數,並調用if語句函數來顯示HTML。我以爲我可以簡單地把它像這樣的函數內,像這樣while語句之後:

$this->display($dbCon); 

而是我不斷收到我栽在代碼的情況下,它不工作相同的錯誤消息。任何幫助,這將不勝感激。

回答

0

我認爲這是因爲您需要撥打$this->display($obj);而不是$this->display($dbCon);

+0

不,我試過了,我也嘗試了其他一些變化,你給了我一些想法,爲什麼它可以被打破,但這些都沒有成效。 –

+0

你能給出錯誤嗎? – vchabot

相關問題