2009-03-23 7 views
0

Что лучше ... делать классы специально для рендеринга html, sth. как это:Как вы можете разделить презентацию (XHTML) и функциональность (PHP-код)?

class IndexHTML { 
    public $doctype = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"; 
    public $title = "<title>MICE</title>"; //title of document 
    public $contentType = "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />"; 
    public $contentStyleType = "<meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />"; 
    public $jsSrc = "<script type=\"text/javascript\" src=\"main.js\"></script>"; //your javascript files included 
    public $css = "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" />"; //your css files included 

    function html_head(){ 
     echo $this->doctype."<html><head>"; 
     echo $this->title,$this->contentType,$this->contentStyleType,$this->jsSrc,$this->css; 
     echo "</head>"; 
     require_once("classes.php"); //require additional needed scripts 
    } 
} 

или лучше писать отдельные файлы, как head.html (только с головой необходимые теги), menu.html, footer.html и т.д., а затем писать только:

class IndexHTML {  
    function html_head(){ 
     require_once("head.html");  
    } 
} 

Я новичок в PHP и стараюсь изучить правильный способ работы с вещами.

EDIT: Отдельные файлы лучше подходят для обслуживания. Как насчет производительности?

Благодарим за совет.

ответ

8

Ну, некоторые могут не согласиться с этим, но, на мой взгляд, то, что делает PHP хорошим, это то, что в первую очередь движок HTML-шаблонов и классы/объекты на самом деле являются второстепенным для этого. Ваш класс IndexHTML на самом деле не добавляет большого значения. IMHO вам лучше просто обрабатывать файлы .php как .html-файлы с помощью некоторых динамических блоков кода и выражений, а не пытаться создать объектную модель только ради нее.

+0

Модифицируемость становится катастрофой с этими установками. –

+0

Не могу согласиться с вами, и не мог согласиться с вами d03boy. Хотелось бы это любить, если бы однажды, первая реакция на эти типы вопросов была не «использовать Smarty». – da5id

+0

Что касается изменчивости, вы справляетесь с ней, как и в C-дни: функциональная декомпозиция. Я заменил строки 300k плохо написанного PHP на 20k строк чистого PHP, где было довольно легко собрать новую страницу с разбивкой по страницам с довольно минимальным кодом (например) – cletus

0

В этом случае лучше использовать отдельные компоненты, поскольку он дает гораздо более читаемый и поддерживаемый код. В общем, я довольно категорически против использования выводов echo для вывода HTML через PHP.

0

Я создаю свой собственный контроллер, в котором есть только PHP-код. Затем у меня есть каталог html-include с моими «представлениями» в нем, который называется что-то вроде: myController.myAction.htm или myController.form.htm и т. Д. Затем я включаю «правильное представление», в зависимости от моей логики, в конце моего контроллера. Это позволяет им иметь доступ ко всем моим переменным, которые я установил в контроллере после любых транзакций базы данных и бизнес-логики.

Моя любимая вещь в том, что она очень проста и позволяет тонны гибкости. Также может быть довольно, если вы переписываете URL-адреса и используете правильное соглашение об именах для организации своих контроллеров и представлений.

0

Использования Smarty шаблоны

1

Там нет «правильного пути» делать это в PHP, только различная принятая «передовая практика» и многие посредственный и просто плохие. PHP дает вам приятное открытое пространство, но это имеет смысл для вас. Это, возможно, самая большая сила. Но это также большая ответственность. Просто потому, что вы можете сделать это, как вам нравится, это не значит, что вы должны.

Я видел множество проектов, которые делают все по-другому. В настоящее время методы включают разделение манипуляций данных, доступа к данным и представления данных с использованием структуры, обычно с центральным диспетчером диспетчеризации. У них есть свои правила о том, как упорядочить ваши каталоги и где найти файлы.

Более старый метод включал обработку каждого файла в виде страницы. У него было несколько includes в верхней части файла, который настраивал среду, включая обработчики базы данных и другие абстракции, но также определенные функции для создания общих элементов страницы. Файл находился в двух половинах: он делал всю свою обработку и доступ в первой половине, а затем построил свой вывод во второй половине. Вариант, который включает в себя отдельный файл для вывода. IME, это ближе к духу PHP и легче сделать работу с нуля.

0

Я новичок в PHP, но я программировал Delphi годами.Как и в случае с Delphi, нет причин, по которым вы не сможете разработать легко поддерживаемый PHP-код, который сочетает логику и презентацию. Я предпочитаю использовать повторное использование кода в виде модульных функциональных элементов, связанных посредством передачи параметров (например, передача HTML со встроенными именами переменных в качестве своего рода шаблона). Кроме того, иногда изобретать колесо - лучший способ узнать, как работает оригинальное колесо, поэтому вместо использования стороннего программного обеспечения для шаблонов, такого как Smarty, попробуйте разработать собственную систему шаблонов с вдохновением от Smarty.

Смежные вопросы