ОПП - Создание гибкого класса (с возможностью приема настроек из внешнего источника).

PHProgress

Новичок
Добрый день.

Уже более недели изучаю ОПП в PHP. В связи с этим появилась практическая задача написать класс, к примеру который обрабатывает работу со страницами сайта.

Структура класса выглядит следующим образом (К ПРИМЕРУ):

PHP:
<?php

########################################
/*
		ФАЙЛ class.page.php
*/
########################################


class Page{

	var $id;         #id-страницы
	var $title;      #название страницы
	var $url;        #url-страницы
	var $text;       #содержимое страницы
	
	// Конструктор
	function  __construct() {	}

	
	function PAGE_info(){
	//Здесь идет обработка запроса к БД
		
		$q = "SELECT * FROM Page WHERE id=".$this->$id;
		$result = mysql_query($q);
		$row = mysql_fetch_array($result);
		return $row;
		
	}

	function PAGE_display(){
	//Здесь идет вывод страницы
		
		print "<html>";
		print "<head>$title</head>";
		print "<body>$text</body>";
		print "</html>";
	}

	
	function PAGE_update(){
	//Здесь идет обработка запроса по обновлению данных в БД

		
	
	}
	
	#----#----#
	
	// Деструктор
	function  __destruct() {	}

	
}

?>

Есть сам класс (class.page.php - вышеприведенный) и должны быть его опции (class.page-option1,2,3,4,5 N и т.д.php) как-бы его расширение, настройки и дополнения.

В связи с этим вопрос.
Как можно расширять данный класс class.page.php на основе внешних настроек и дополнений :

1. К примеру дополнить в него новую функцию из файла class.page-option1.php
2. К примеру модернизировать существующую функцию function PAGE_info(), изменив в ней SQL-запрос с добавлением дополнительный параметров WHERE из файла class.page-option2.php
3. К примеру расширить функцию PAGE_display на основе файла class.page-option3.php, дабавив туда отправку заколовка Header.

Другими словами, как сделать гибкий класс, поддающийся внешним настройкам, модернизациям и дополнениями?

--
Как реализуется подобная концепция гибкости классов и где можно про это посмотреть?
 

AmdY

Пью пиво
Команда форума
а в каком месте у тебя ооп?

$this->$id - WTF?
 

KorP

Новичок
var, print, мне кажется что стоит взять более свежую литературку, не?
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
А что, print уже отменили или deprecated??
 

AmdY

Пью пиво
Команда форума
вынес весь мусор про print из темы.

совет про свежесть очень актуален.

PHProgress
ооп предполагает наследование и делегирование, ты можешь просто пеереопределять методы, вместо сложных ифов на сновании конфигов.
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
PHProgress
Твоя главная ошибка - это то, что ты решил делать один класс, и в него пытаться запихать всё.
ООП - это обычно взаимодействие множества объектов
 

AmdY

Пью пиво
Команда форума
Духовность™
я сейчас себя отучиваю от привычки пользоваться AR в контроллерах, так как нужно выносить билдеры во внутрь модели, выделяя отдельный метод. Недавно очень сильно обжёгся, когда пришлось разрабатывать фронтэнд отдельно от бэкенда и синхронизировать структуру базы.
 
Сверху