2010-04-15 225 views
0

我的PHP體驗相當有限。我只是繼承了一些看起來很奇怪的東西,我想知道這是否是一種標準的做事方式。這在瀏覽器位置(例如www.example.com/example_page)顯示的頁面中有這樣的:創建PHP語言網頁

<? 
$title = "Page Title"; 
$meta = "Some metadata"; 
require("pageheader.inc"); 
?> 
<!-- Content --> 

然後pageheader.inc有這樣的東西:

<? 
@$title = ($title) ? $title : ""; 
@$meta = ($meta) ? $meta : ""; 
?> 
<html> 
<head> 
<title><?=$title?></title 
</head> 
<!-- and so forth --> 

也許別人覺得這種風格有用,但它讓我困惑。我想這可能是朝着一個基本的內容管理系統邁出的一步,但它在這裏的工作方式我認爲它會增加服務器處理所需的處理量,而不會減少Web開發人員的負擔,使其值得付出努力。

那麼,這是用PHP創建頁面的正常方式嗎?或者我應該把所有這些都放在一個更好的方法上?

此外,我知道「<?」(與「<?php」)是不合需要的;我只是重複了代碼中的內容。

+0

@Skilldrick:謝謝你的修復! – GreenMatt 2010-04-15 20:08:13

回答

3

那麼,這當然不是無效的方式來做到這一點 - 但它可能有點繁瑣的閱讀和維護。我不會說有一種「正常」的方式在PHP中做這樣的事情。在一天結束時,您將變量輸出到HTML中 - 因此如果沒有使用專用模板引擎(和/或朝着更多基於MVC的方法前進,如ryeguy所述),則沒有多種選擇。

我的建議:如果它不適合您的首選風格,請更改它。最重要的是,如果你要開發和維護它,你可以舒適地,高效地使用它。

3

這是種類在正確的軌道上向MVC。 MVC完全是關於問題的分離。這裏的想法是,第一個片段設置值,然後pageheader.inc輸出它們。這使邏輯脫離視圖。

它做得很潦草。

1

基本上有兩種方法可以使用,它們是相互顛倒的。你有一個方法的例子,每個頁面都有自己的內容負責包含頁眉,頁腳和其他常用數據。這種方法沒有什麼特別的錯誤。第二種方法是有一個頁面負責包含頁眉,頁腳,內容。這是使用流行的PHP框架的更常見的應用程序。

2

PHP是一個非常分散的社區,沒有「標準」的做事方式。也就是說,看起來你發佈的pageheader.inc例子可以簡化。頂端的代碼對你沒有好處。僅此一點就足夠了:

<html> 
<head> 
<title><[email protected]$title?></title> 
</head> 

如果你正在尋找的架構和最佳做法的一些指導,我會強烈建議檢查出像笨Kohana的或流行的PHP框架。

+1

爲了清楚起見,'@'符號可以消除錯誤。 (在這種情況下,通知變量未設置。) – 2010-04-16 07:43:16

0

我在很多簡單的網站上使用過這種風格,比如5-10頁的小冊子軟件站點,我想要一些集中的代碼,例如從幾個變量創建菜單和頁面標題,但不想全面吹MVC結構,因爲它是矯枉過正。