2017-08-31 60 views
0

當我替換'。$ content()'。用「Test」這樣的字符串在正確的位置在頁面中間打印「Test」。但是當我使用變量'。$ content()'。它會在頁面的左上角打印「測試」。 (請參閱課程頁面中的返回)。PHP返回函數在頁面頂部打印文本

我已經使用了這種「返回方法」很多次,這是它第一次不起作用。

我想使用$ content變量它是如何在腳本中,但我想在正確的地方輸出。


蒂莫


core.php中

class site { 
function __construct($title,$content) { 
    echo ' <html> 
      <head> 
      <title>'.$title.'</title>   
      <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" /> 
      <link href="core/assets/css/main.css" type="text/css" rel="stylesheet"> 
      </head> 
      <body> 
      <header id="header"> 
       <div class="container"> 
        <h1>DataBaas</h1> 
        <h2>Baas over je data</h2> 
       </div> 
      </header> 
      <div class="content"> 
       <div class="article"> 
        '.$content().' 
       <div> 
      </div> 
      </body>  
      </html>'; 
    } 
} 
class pages { 
    function home() { 
    return 'Test'; 
    } 
} 

的index.php是這樣的:

<?php 
include_once("core/core.php"); 
$pages = new pages; 
$thispage = $pages->home(); 
$site = new site('Home',function(){global $thispage; echo $thispage;}); 
?> 
+5

這真的是真的錯了.. –

回答

1

這應該修復它:

<?php 
include_once("core/core.php"); 
$pages = new pages; 
$thispage = $pages->home(); 
$site = new site('Home',function(){global $thispage; return $thispage;}); 
?> 

不是方法,我會親自跟進......但安永......

+0

是啊,這是從我身上學到的,比我更好的人,所以我想這是一個好方法.... @cstruter –

+0

許多方法來剝皮貓,但總是做你自己的研究,做出你自己的想法,衡量一種方法的優點和缺點 - 不總是可行的依靠「權威」 – cstruter

0

即使這是編碼一個網站的錯誤的方式,我建議你做一些修改,如:

interface Renderable 
{ 
    public function render(); 
} 

interface Page 
{ 
    public function getTitle(); 
    public function getContent(); 
} 

class Site implements Renderable 
{ 
    private $page; 

    public function addPage(Page $page) 
    { 
     $this->page = $page; 
    } 

    public function render() 
    { 
     echo ' 
     <html> 
      <head> 
      <title>'.$this->page->getTitle().'</title>   
      <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" /> 
      <link href="core/assets/css/main.css" type="text/css" rel="stylesheet"> 
      </head> 
      <body> 
      <header id="header"> 
       <div class="container"> 
        <h1>DataBaas</h1> 
        <h2>Baas over je data</h2> 
       </div> 
      </header> 
      <div class="content"> 
       <div class="article"> 
        ' . $this->page->getContent() . ' 
       <div> 
      </div> 
      </body>  
      </html>'; 
    } 
} 

class Home implements Page 
{ 
    public function getTitle() 
    { 
     return 'Home'; 
    } 

    public function getContent() 
    { 
     return 'Test'; 
    } 
} 

在你的索引,你應該有這樣的:

$site = new Site() 
$site->addPage(new Home); 
$site->render(); 

現在你已經學會了一些接口和他們的類如何實現可typehint編輯的方法。