Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Азамат_Курманбеков_Дипломдук_Иш.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.49 Mб
Скачать
    1. Жалпы түзүлүш

3.1-сүрөт. MVCде түзүлгөн тиркеменин иштөө принциби

Сайтты иштеп чыгуунун баштапкы этаптарында албетте кандай структурага ээ болоору жана кийинки өзгөртүү, кошумчаларга ийкемдүү бир структура түзүлүшү ойлонуштурулган. Тиркеменин түзүлүшүн аныктаган негизги программало паттерни катары ыңгайлуу логикалык структуралоо мүмкүнчүлүгүнө ээ MVC (Model View Controller) паттерни тандап алынды. Symfony MVC долбоорлоонун классикалык калыбында негизделген. Кыскасы, Symfony MVC паттернин структурасын ээ. MCVнин архитектурасы үч деңгээлден турат. Алар жөнүндө 2 главада маалымат берилген.

Үч деңгээлге бөлүштүрүү болгондуктан тиркемелер структураланууга ээ болушат. Код түшүнүктүү жана аны өзгөртүүгө жеңил болот. Иштеп чыгуу ийкемдүү боло баштайт. Мисал катары, эгер иштетилип жаткан тиркеме жалаң гана кадимки браузерледе иштебестен портативдүү компьютерлерде дагы иштөөсү керектелсе, дагы бир view (портативдик компьютерлер үчүн ) түзүш керек. Мен түзүп жаткан сайттын түзүлүшү MVC паттерндин негизинде түзүлгөн.

    1. Проекттин файлдык архитектурасы

Баардык веб-долбоорлор төмөнкү элементтерден турат:

  • Берилиштер базасы, мисалы MySQL же PostgreSQL

  • Статикалык файлдар(HTML, сүрөттөр, JavaScript файлдар, стильдер жадыбалдары ж.б. )

  • Колдонуучулар же администраторлор жүктөгөн файлдар

  • PHP класстар жана китепканалар

  • Сырттан келген китепканалар(башка иштеп чыгуучудан келген скрипт)

  • Batch файлдар (буйрук сап аркылуу иштетилген скрипттер)

  • Окуялар журналы( же болбосо логтор, тиркеме же сервер тараптан жүргүзүлгөн отчеттор)

  • Конфигурация файлдары

3.2-сүрөт. Файлдар архитектурасы

Жогоруда айтылгандарды тартиптүү түрдө сакташ үчүн Symfony MVC идеясы жана долбоор/тиркеме/модуль/иш-аракет иерархиясы боюнча түзүлгөн стандарттык файлдык структураны сунуштайт. Файлдык структура долбоор, тиркеме же модуль түзүү учурунда автоматтык түрдө түзүлөт. Албетте, сиз өзүңүздүн талаптарыңыз же заказчиктин талаптары боюнча өзгөртүп алсаңыз деле болот.

Долбоордун директориялары

  • app/ - эң негизгиси конфигурацияларды камтыйт жана ошонун ичине routing кирет

  • src/ - проектин коду, bundles

  • vendor/ - китепканалардын жыйындысы

  • web/ - аяккы колдонуучуларга жеткиликтүү директория

Эми ар бир директорияны тереңиреек изилдеп көрөлү. web/ - бул сырттан жеткиликтүү болгон баардык файлдардын директориясы. Мисал катары: сүрөттөр, css, js файлдар ж.б. Мындан сырткары ушул директорияда тиркемеге кирүү скрипти жайгашкан(front controller). Front controller төмөнкүдөй болушу мүмкүн:

// web/app.php

require_once __DIR__.'/../app/bootstrap.php.cache';

require_once __DIR__.'/../app/AppKernel.php';

use Symfony\Component\HttpFoundatholds all tests for the bundle.ion\Request;

$kernel = new AppKernel('prod', false);

$kernel->loadClassCache();

$kernel->handle(Request::createFromGlobals())->send();

Баардык суроо-талаптарды Front Controller иштетип чыгат. Front Controller катарында, кадимки скрипттер чыгышат.

  • app/console – тиркемеге CLI(буйрук сабы) аркылуу жетүү

  • app/app.php – тиркемеге web аркылуу жетүү

  • app/app_dev.php – тиркемеге web аркылуу иштеп чыгуучу режиминде жетүү

Жогоруда айтылган баардык фронт контроллерлер бир негиз боюнча түзүлүшөт:

  • Жүктөөчү класстарды каттоо скриптин кошуу жолу менен autoload (автоматтык түрдө класстарды жүктөө) тураланат;

  • кээ бир учурда класстардын кэши колдонулат (көп колднулган класстар);

  • Өзөк иштетилет;

Өзөк(Kernel) – бул Symfony системанын движогу. Анын негизги максаты иштөө чөйрөсүн демилгелөө.

Өзөк AppKernel.php app/ директориясында жайгашкан.

app/ директориясын тиркемелерди иштеп чыгуу учурунда биз конфигурацияларды жана роутингти өзгөртүү үчүн колдонобуз. Ушу директория кэш жана логторду камтыйт(app/cache, app/logs), андан тышкары app/Resource тиркеме деңгээлиндеги шаблондорду камтыйт.

3.3-сүрөт. src/ - бандлдар директориясы

src/ биз жазган баардык кодду камтыйт(php, css, js ж.б.), тиркеменин иштөөсүнө зарыл. Ушул директорияда бандлдар(bundle) жайгашкан.

Symfony фрэмворктун жардамы менен иштеп чыгуунун эң негизги өзгөчөлүгү – бул bundle системасы. Бандл – белгилүү бир максатка жетүү үчүн колдонулган скрипттердин жыйындысы(php, js, html, css ж.б.).

Symfonyнин өзгөчөлүгү – “баардык нерсе bundle”, тиркеме, жадагалса өзөктүн функционалы. Башкача айтканда, биз биринчи кезекте бандл түзүшүбүз керек.

3.3 сүрөттө көрсөтүлгөндөй, src/ директориясы жалаң гана бандлдарды камтыйт.

Бандлдын структурасын карап кетсек:

  • Admin/ - админ панелине тиешелүү класстарды камтыйт(бандл түзүүдө болбойт, колдонуучу тараптан түзүлө турган директория).

  • Controller/ - бандлдын контроллери

  • DependencyInjection1кызматтарды камтыйт

  • Entity берилиштер базасы менен иштөөчү класстарды камтыйт

  • Form формаларды түзүгө php скрипттерди камтыйт

  • Resources/views/ - көрсөтүү шаблондорун камтыйт(мисалы Hello/index.html.twig)

  • Resources/public/ - веб-тиркеменин иштөөсүнө керектүү бөлүкчөлөрдү камтыйт, бирок код болуп саналбайт (сүрөт, css ж.б.). web/ директориясына assets:install буйругу аркылуу көчүрүлөт.

  • Tests – бандлдын тесттерин камтыйт

Symfony сунуштаган файлдык архитектура MVСнин баардык мыкты идеяларын өзүнө тартып алгандыктан, андан тышкары ийкемдүүлүк жана конфигурацияны өзгөртүү жөндөмдүүлүгү болгондуктан менин дипломдук ишиме негизки каркас болуп тандалды.