Intereting Posts
Комментирование системы на сообщениях с использованием ajax и php array_intersect выдает ошибки, когда массивы имеют подматрицы Сброс PHP Web содержимого, сгенерированного Javascript Преобразование utf8-символов в iso-88591 и обратно в PHP Введенный IP-адрес в базу данных MySQL изменяется каждый раз mysql автоматически передает строки в целое число вставить один набор данных несколько раз mysql Как пройти пешком или проехать с помощью Google карт с помощью php Codeigniter ГДЕ И ИЛИ вместе Пакет php5 не имеет кандидата на установку (Ubuntu 16.04) Храните IPV6 и IPV4 в MySql, а также читайте их Как вы соответствуете одному из двух слов в регулярном выражении? Должен ли я использовать модель EAV? Добавление разных случайных чисел в URL-адрес в массиве Javascript на каждом цикле В объявлениях пространства имен внутри включенных файлов автоматически входит пространство имен родительского файла (PHP)?

Генерация страницы из PHP-класса

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

Мне было интересно, как вы это сделаете.

благодаря

Я бы предложил изучить некоторые фреймворки PHP, такие как Cake, который хорош для начинающих, или Symfony или Zend Framework, если вы более квалифицированы. Это упростит вашу PHP-разработку.

Я не программист OO .. но, как доказательство концепции, и по вашему вопросу вы можете сделать / попробовать что-то вроде этого.

class Page { public $meta_title; public $meta_keywords; public $html_body; public function displayPage() { $page =' <html> <head> <title>'.$this->meta_title.'</title> <meta name="keywords" content="'.$this->meta_keywords.'" /> </head> <body> '.$this->html_body.' </body> </html> '; echo $page; } } 

Тогда вы просто используете этот класс страницы, как ..

 $page = new Page(); $page->meta_title ="Hello world!"; $page->meta_keywords = "some text keywords"; $page->body = '<h1>Contact Us </h1> <p>you can contact us at blah ... blah .. etc.</p> <address>Dummy Address </address> '; $page->displayPage(); 

Обратите внимание, что вы можете добавить в него так много вещей, как .. переменные класса (тип массива) для определения таблиц стилей, javascripts файлов .. тогда вы просто перебираете его, чтобы динамически определять эти файлы для отдельных страниц.

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

Кроме того, вы можете попробовать некоторые PHP-платформы, которые являются гораздо более развитыми решениями, но это действительно зависит от ваших навыков программирования и ваших требований.

Надеюсь это поможет.

Вы можете сделать все теги на странице, хранящиеся в виде многомерного массива. PHP достаточно мягкий, чтобы сделать это. Таким образом, каждый тег будет храниться в элементе массива. Затем вы можете использовать управляющие инструкции для печати различных частей страницы в разное время в зависимости от определенных условий. Это было бы похоже на то, что вы получаете, когда конвертируете XML-файл в массив. Вот что я думаю.

 $page['html']['title'] = "Page's Title"; $page['body']['p'][1] = "1st Paragraph"; $page['body']['p'][2] = "2nd Paragraph"; 

И тогда вы можете использовать свои собственные функции, чтобы распечатать их как HTML-поля.

Я бы предложил использовать некоторые из структур MVC (Model, View, Controller), таких как KohanaPHP . По сути, это. Вы работаете в строго объектно-ориентированной среде. Простая страница в Kohana, полностью построенная из класса, будет выглядеть так:

 class Home_Controller extends Controller { public function index() { echo "Hello World"; } } 

Затем вы получите доступ к этой странице, посетив urur url, имя класса и имя метода:

http://www.mysite.com/home/ ( index () можно вызвать после дома /, но это неявно )

Когда вы начнете получать активность базы данных, вы начнете работать с другим классом под названием « Модель» . Это будет содержать методы взаимодействия с вашей базой данных, например:

 class Users_Model extends Model { public function count_users() { return $this->db->count_records('users'); } } 

Обратите внимание, что я не писал свой собственный запрос. Kohana поставляется с интуитивно понятным Query Builder .

Этот метод будет вызываться из вашего контроллера , первого класса, о котором мы упоминали в начале этого решения. Это будет выглядеть так:

 class Home_Controller extends Controller { public function index() { $usersModel = new Users_Model; $userCount = $usersModel->count_users(); echo "We have " . $userCount . " users!"; } } 

В конце концов вам понадобятся более сложные макеты, которые будут включать HTML / CSS / Javascript. На этом этапе вы представите « Представления », которые представляют собой только слои представления. Вместо того, чтобы вызывать echo или print изнутри Контроллера, вы загрузите представление (по существу, HTML-страницу) и передадите ему некоторые переменные:

 class Home_Controller extends Controller { public function index() { $myView = new View("index"); $usersModel = new Users_Model; $userCount = $usersModel->count_users(); $myView->userCount = $userCount; $myView->render(TRUE); } } 

Что бы загрузить следующий «Просмотр»,

 <p>We have <?php print $userCount; ?> users!</p> 

Этого должно быть достаточно, чтобы вы начали. Использование MVC-стиля действительно чистое и очень забавное для работы.

Так много способов сделать это.

Когда я делаю простой персональный сайт, у меня обычно есть баннер сверху и меню с одной стороны. Чтобы не было необходимости копировать «все», мой index.php проверяет переменную get и на основе этой переменной get загружает соответствующий контент посередине. В качестве примера, мой index.php. Мое меню фактически загружает контент с помощью функции, но это необязательно / рекомендуется:

 <?php $page = strtolower($_GET['page']); if(!isset($page) || $page === '') { $page="home"; } switch($page) { case "loomis": require_once("loomis.php"); break; case "home": default: $page = "home"; require_once("home.php"); break; } include "menu.php"; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>Nebulous - <?php getTitle($page) ?></TITLE> <link href="style.css" rel="stylesheet" type="text/css" /> </HEAD> <body> <?php displayMenu() ?> </body> </html> 

Классы действительно полезны только как представления данных или функциональности, а не для рендеринга страниц.

ООП может быть полезен при рендеринге страницы, если у вас есть что-то статическое на всех страницах. (например, Верхний колонтитул, Нижний колонтитул)

 $index = new Page(); $index->displayHeader(); // php/html per needs $index->displayFooter(); 

Это не все, что интуитивно, но, как говорили другие, возможности огромны. Я бы предложил собрать книгу по этому вопросу.

Лучший способ достичь вашей цели – начать с класса html. Его цель – написать любые теги HTML и правильно отложить их. Это не простая задача, так как я едва ли когда-либо нашел один такой класс html в Интернете, написанный правильно. Подсказка: вам понадобится стек для управления автоматическим закрытием тегов HTML и рабочего буфера для текущего тега, который катится в больший буфер хранения.

Используя службы класса html, вы можете создать класс веб-страницы, который будет создавать страницы из настроек. Трюк здесь заключается в том, чтобы оставаться гибким, а не слишком жестким кодом внутри вашего класса. Вам нужен сеттер для базовых настроек, таких как название, автор, ключевые слова и т. Д., Удерживающие их в массиве. Затем webpage-> header () должен автоматически выводить верхнюю часть страницы. Затем вы должны использовать такие функции, как webpage-> heading ($ string, $ size), чтобы создать заголовок, webpage-> paragraph ($ text), webpage-> image () и т. Д. В конце вам просто нужно webpage-> footer ().

Чтобы сделать класс веб-страницы стоящим, создайте также css. Например, если вы хотите использовать bootstrap, вы можете включить класс css и стиль вашего кода. Обратите внимание, что вы также можете создать класс веб-страницы для создания дополнительных объектов, таких как веб-страница-> панировочные сухари () или веб-страницы-> разбивка на страницы ()