2017-04-11 8 views
1

私はOOPとPHPを試している大学生です。私はBuildPageクラスを使ってページを構築したいと思っていました。私が試してみ\ $のように$をエスケープした場合PHPクラスを使用してWebページを生成

$buildPage->addToPage(" 
<!-- Here is our page's main content --> 
    <!-- Use function to display songs --> 

<?php $music->displaySongs('xmlfiles/songs.xml'); ?> 

"); 

:私は関数を使用してページを構築しようとすると、

<?php 
Class BuildPage { 
    private $title; 
    private $style; 
    private $head; 
    private $header; 
    private $page; 
    private $footer; 
    private $finalPage; 

    public function __construct($title, $style) 
    { 
    $this->title = $title; 
    $this->style = $style; 
    } 

    public function addHead() 
    { 
    $this->head = " 
    <!DOCTYPE html> 
    <html lang='en'> 
    <head> 
    <meta charset='utf-8'> 
    <title>$this->title</title> 
    <link href='$this->style' rel='stylesheet' type='text/css'> 
    <link rel='stylesheet' href='style.css'> 

    </head>"; 

    } 

    public function addToPage($partOfPage) 
    { 
    if(empty($this->page) || !isset($this->page)) 
    { 
    $this->page = $partOfPage; 
    } 
    else { 
    $this->page .= "<br> " . $partOfPage; 
    } 
    } 

    public function addHeader($header) 
    { 
    $this->header = "<body><div class='container'><header> " . $header . " 
    </header>"; 
    } 

    public function addFooter($footer) 
    { 
    $this->footer .= "<BR><footer> " . $footer . " </footer></div></body> 
    </html>"; 
    } 

    public function getPage() 
    { 
    $this->finalPage = $this->head . $this->header . $this->page . 
    $this->footer; 
    return $this->finalPage; 
    } 
} 

?> 

しかし、私は以下のように引数の中にPHPを使用する方法を理解することはできません何らかの理由で文字列にすると、HTMLのコメントになります。このアプローチはまったく機能しますか?

多くのおかげ

EDIT:

これは、以下のインデックスページですが、私はエコーとの下部にクラスを呼び出します。

<?php 
require_once('phpclasses/Connect.php'); 
require_once('phpclasses/BuildPage.php'); 
require_once('phpclasses/MusicIE.php'); 

$dbconnect = new Connect(); 
$music = new MusicIE(); 
$buildPage = new BuildPage("Music Website", "style.css"); 


$buildPage->addHead(); 
$buildPage->addHeader(" 
<!-- Here is the main header that is used accross all the pages of my 
website 
--> 
<div class='PageHeading'>Available Music Listed Below:</div> 
<nav> 
    <ul> 
    <li><a href='#'>Home</a></li> 
    <li><a href='#'>Register</a></li> 
    <li><a href='#'>Login</a></li> 
    </ul> 
</nav> 
<form> 
<input type='search' name='q' placeholder='Search query'> 
<input type='submit' value='Go!'> 
</form> 
"); 
$buildPage->addToPage(" 
<!-- Here is our page's main content --> 
    <!-- Use function to display songs --> 

" . $music->displaySongs('xmlfiles/songs.xml')); 

$buildPage->addFooter(" 
<!-- And here is my footer that is used across all the pages of our website 
--> 
    <p>©Copyright 2017 by Kris Wilson. All rights reversed.</p> 
"); 

echo $buildPage->getPage(); 

?>

答えて

0

あなたは、文字列リテラル関数呼び出しの代わりに$music->displaySongs('xmlfiles/songs.xml')の結果を渡すために試みることができるBuildPage::addToPage($partOfPage)関数に文字列を渡しているので。ように:

$buildPage->addToPage(" 
<!-- Here is our page's main content --> 
    <!-- Use function to display songs --> 

". $music->displaySongs('xmlfiles/songs.xml')); 
+0

あなたが提案したようにすると、元の質問が編集されました。ページの一番上にHTMLの外に結果が表示されます。 – Sifer

+0

$ music-> displaySongs( 'xmlfiles/songs.xml'))文字列をエコーし​​ませんが、代わりにそれを返します –

0

addToPage関数呼び出しでコードが間違っているようです。あなたはこのようにそれを呼び出す必要があります:あなたは文字列の末尾に$music->displaySongs('xmlfiles/songs.xml')出力を追加する必要があります

$buildPage->addToPage(" 
<!-- Here is our page's main content --> 
    <!-- Use function to display songs --> 

".$music->displaySongs('xmlfiles/songs.xml')); 

関連する問題