PHP OOP базирана CMS - Показване на отделни страници

Създавам CMS, използвайки PHP и ООП - това е малко учебен проект, нещо, което да подобри моите ООП умения, като същевременно ме мотивира да имам крайна цел в ума си.

Стигнах до действително кодиране на задните крайни страници - просто имам въпрос как най-добре да структурирам приложението по отношение на папки, файлове и т.н.

Имам папка с класове, някои от които планирам да използвам в уебсайта на предния край. Един такъв клас е класът Page, който се занимава със зареждането на шаблона (заглавка, съдържание и долен колонтитул), който ще работи добре за предния край, сигурен съм. Задният край обаче е различна история, очевидно нито една от страниците (страница за добавяне/редактиране, добавяне/редактиране на потребител и т.н.) няма да се съхранява в базата данни, така че как да се справя с извеждането на тези страници?

Най-добре ли е да създам подкласове на класа Page и да настроя съдържанието там? Или би било по-добре да създадете нов PHP файл за всяка страница? Склонен съм към просто използване на подкласове, но това може да доведе до доста тежък файл (клас на страница, подкласове на страница за добавяне, страница за редактиране и т.н.).

Всеки съвет за най-добрия начин да се справите с това би бил чудесен.


person 0Neji    schedule 16.05.2013    source източник


Отговори (2)


Бих направил повече или по-малко тази структура (MVC архитектурен модел):

-MyCMS
--assets
----css
----img
----js
----templates
------pages
------partials
--------forms
--------grids
--conf
--src
----Controller
------Dispatcher
----Form
----Model
------DataMapper
----Routing
----View
------Renderer
--test

Мисля, че е лоша идея да поддържате всичките си класове в една и съща папка, те трябва да бъдат групирани логически. Това е само пример, не е необходимо да имате тези компоненти във вашата папка src, но ще ви даде представа как да организирате вашите компоненти.

Вашият клас Page трябва да бъде общ, да изгражда страница от шаблони в assets/templates/pages, а не да го подкласира за всяка отделна страница.

person Henrique Barcelos    schedule 16.05.2013
comment
липсва ви папката с тестове =P - person tereško; 16.05.2013
comment
На практика, но не знам дали използва unit tests =P... Но ще променя там. - person Henrique Barcelos; 16.05.2013
comment
Не използвам модулни тестове... все още! Мисля, че това е пътят, по който в крайна сметка ще тръгна. Харесва ми идеята да имам основен код и да оставя шаблона да върши целия стил сам, но това не е толкова практично, колкото да имаш пълен контрол върху извеждането на страницата в шаблонен файл. - person 0Neji; 16.05.2013
comment
Но вие ще имате пълен контрол. За всяка различна страница, която ще имате, създавате нов шаблон в templates/pages. Вашият клас Page трябва да ви позволява само да променяте тези шаблони, както желаете. - person Henrique Barcelos; 16.05.2013
comment
Това имах предвид, че всъщност ще имам повече контрол с помощта на шаблонни файлове. Съжалявам, ако това не е ясно. - person 0Neji; 17.05.2013

Поставете всеки подклас в отделен файл. Името на файла и името на класа трябва да съответстват, така че да можете да настроите автоматично зареждане на клас по-късно.

person Adder    schedule 16.05.2013