Өөрийн гэсэн фраймворкоо Symfony2 -ын Компонент дээр үүсгэе (хэсэг 1)

Чимэг: Энэхүү нийтлэл нь “Өөрийн фраймворкоо Symfony2 -ын компонент дээр үүсгэе” цувралын нэг хэсэг юм.

Symfony2 бол орчин үеийн веб хөгжүүлэлтийн асуудлуудыг бүрэн шийдсэн, биеэ даасан, дахин ашиглагддаг, өөр хоорондоо уялдаатай PHP компонент юм.

Эдгээр доод түвшний компонентуудыг ашиглахын оронд та ашиглахад бүрэн бэлэн болсон эдгээр компонентууд дээр суурилсан Symfony2 багц вэб фраймворкийг ашиглах боломжтой. Эсвэл өөрийн гэсэн фраймворкоо үүсгэх боломжтой. Эдгээр нийтлэлүүд нь үүнийг хамарсан болно.

Чимэг: Хэрэв та Symfony2 багц фраймворкийг ашиглахыг хүсвэл, албан ёсны тайлбар хичээлүүд-ийг уншина уу.

Яагаад та өөрийн гэсэн фраймворкийг үүсгэмээр байгаа вэ?

Яагаад өөрийн гэсэн фраймворк үүсгэх нь сонголтын чинь эхэнд байна гэж ? Хэрэв та иргэн тойрныхноосоо асууж сураглавал, бүгд л таньд наадах нь тэнэг санаа, чи дугуйг дахин бий болгох хэрэг байгаамуу, тэгэхийн оронд байгаа фраймворкыг нь ашиглах нь дээр, наад санаагаа март гэх мэт хэлэх байх. Ер нь ихэнхдээ тэдний зөв, харин надад “өөрийн гэсэн фраймворк үүсгэх” нь дээр гэсэн хэдэн дээр санаанууд байна:

  • Орчин үеийн вэб фраймворкуудын доод түвшний ойлголтуудыг мэдэх авах ба Symfony2 багц фраймворкийн дотоод нарийвчилсэн архитектурыг ойлгоно.
  • Зөвхөн өөрийнхөө тусгайлсан хэрэгцээндээ л зориулж враймворк үүсгэх (Хүсээд байгаа зүйл чинь үнэхээр өвөрмөц гэдэгтэй итгэлтэй байх).
  • Зүгээр туршилга олж авах гэж хөгжилдөх гэж. (сураад хаях зарчимаар – learn-and-throw-away)
  • Өмнөх хуучин аппликэйшнаа орчин үеийн вэб хөгжүүлэлтийн сайн туршилгуудаас авч сайжруулж шинэчлэх.
  • Бусдад би өөрийн гэсэн фраймворк үүсгэж чадна гэдгээ батлах (бага зэргийн зүтгэл хэрэгтэй)

Би таныд өөрийн гэсэн враймворкоо хэрхэн үүсгэхийг аажимаар алхам алхамаар заах болно. Алхам бүрт та бүрэн ажилладаг враймворктой хичээлийг дуусгах ба та тэр чигээр нь эсвэл өөрийнхөөрөө ашиглаад авах боломжтой байна. Бид энгийн врэймворкоос эхлээд, алхам бүрт шинэ онцлог, ойлголтуудыг нэмээд явна. Ингээд эцэст нь та бүрэн тоноглогдсон, багц вэб фрэймворктой болно.

Мэдээж алхам бүр Symfony2-ын компонентуудыг сурах боломж завшаан байх болно.

Чимэг: Хэрэв таньд бүх нийтлэлийг унших цаг зав байхгүй эсвэл маш хурдан эхлэмээр байгаа бол, Silex Symfony2-ын компонент дээр суурилсан микро фрэймворкыг судлаад үзээрэй. Код нь маш авсаархан ба Symfony2 компонентуудын ойлголтуудыг олж авна.

Орчин үед маш олон вэб фраймворкууд өөрсдийгөө MVC(Model-View-Controller) фраймворк гэж нэрлэдэг. Бид нар энд MVC-ын тухай ярихгүй. Учир нь Symfony2-ын компонентууд нь зөвхөн MVC архитектурыг дагадаг фраймворкуудаас гадна, өөр ямар ч төрлийн фраймворк үүсгэж болох учираас тэр юм. За юутай ч хэрэв та MVC-ын утгыг нь судалж үзвэл, энэ цувралууд маань хэрхэн Фраймворкын дирдлагын (Controller) хэсгийг үүсгэх талаар байгааг мэднэ. Харин Загвар (Model), Харагдац (View) -ын хувьд таны хувын сонирхлоос л хамаарах ба таныг би ямарч 3 дахь ч (third-party) төрлийн сангуудыг (Model-д Doctrine, Propel эсвэл PDO, View -д PHP эсвэл Twig) ашиглахыг зөвшөөрнө.

Фрайворк үүсгэхэд MVC загварыг дагах нь тийм ч зөв шийдэл биш. Үндсэн зорилго бол Хамаарлуудыг Салангад (Separation of Concerns) авч үзэх; Энэ л ганцхан таны бодож тунгаах ёстой загварчлалын бүтэц гэж би бодож байна. Symfony2 Компонентууд голчлон HTTP нарийвчлал, онцлогуудыг (specification) авч үздэг. Тиймээс бидний үүсгэх гэж буй фраймворк нь нарийвчилбал HTTP фраймворк эсвэл Хүсэлт/Хариулт (Request/Response) гэсэн төрөлд хамаарагдах нь зүйтэй болов уу.

Эхлэхээс өмнө
Хэрхэн фраймворк үүсгэх талаар зөвхөн унших нь хангалттай биш. Тиймээс та жишээ болгоны даган хийж, агшин тухай бүрт оролдох нь чухал. Ингэхийн тулд таньд PHP хувилбар (5.3.8 эсвэл дээш байвал сайн), вэб сервер (Apache эсвэл NGinx), PHP-ын сайн мэдлэг болон Объект Хандалт програмчлалын ойлголттой байх хэрэгтэй.
Ихлэхэд бэлэн үү, За эхэлцгээе.

Эхлүүлэгч (Bootstrapping)
Анхныхаа фраймворкыг үүсгэх талаар бодохоосоо өмнө бид зарим тохиролцооны талаар ярилцах хэрэгтэй: Энэ нь
кодоо хаана хадгалах, хэрхэн класуудаа нэрлэх, хэрхэн нэмэлт хамаарлыг бий болгох гэх зэрэг юм.

Фраймворкоо хадгалахын тулд машиныхаа хаа нэгтэй дараах хавтасыг үүсгэнэ:
$ mkdir framework
$ cd framework

Кодын стандарт
Хэн нэгэн нь кодын стандартын тухай маргаж эхлэхээс өмнө, бүгдээрэй энийг таныг хангалттай тохирохуйц байдлаар нээх чухалчлахгүйгээр хүлээн зөвшөөрчгөөе. Энэ хичээлийн хувьд бид Symfony2 -ын кодын стандарт -ыг дагах болно.

Компонентуудыг суулгах
Бидний фраймворкд хэрэгтэй Symfony2 Компонентуудыг суулгахын тулд бид Зохиогч (Composer) (PHP-ын хамаарлын менежер) -ыг ашиглана. Эхлээд хамаарах сангуудаа composer.json файлд жагсааж өгнө:
{
   
“require”: {
       
“symfony/class-loader”: “2.1.*”
   }
}

Энд бид Зохиогчид(Composer) бидний прожект Symfony2 ClassLoader компонентоос хамаарахыг зааж өгч байна, хувилбар 2.1.0 эсвэл дээш. Прожектын хамаарлуудыг суулгахын тулд, удирдагч (composer) бинар-ыг татаж аваад ашилуулна:
$ wget http://getcomposer.org/composer.phar
$ # or
$ curl -O http://getcomposer.org/composer.phar

$ php composer.phar install

install командыг ажилуулсны дараа та vendor хавтас Symfony2 ClassLoader кодыг агуулсан байхыг харна.

Зөвөлгөө: Бид таныг Зохиогчыг (Composer) хэрэглэхийг санал болгож байгаа боловч та мөн Гит-ын submodule болон Архив файлыг татаж авч задалж мөн болно. Яасан ч таны дур.

Нэрны тохиролцоо ба Автомаар дуудах (Autoloading)
Бид бүх класуудаа автоматаар дуудна. Автомат дуудалт байхгүйгээр та класаа хадгалсан файлаа хэрэглэхээсээ өмнө дуудаж оруулах шаардлагатай. Гэвч зарим хэцүү ажилаа бид PHP -д үлдээчиж бас болно.

Symfony2 Классын нэр болон автомат дуудалтанд de-facto PHP стандарт, PSR-0     -г дагадаг. Symfony2 ClassLoader Компонент PRS-o стандартыг хэрэгжүүлсэн автомат дуудалтыг бидэнд өгнө. Мөн ихэнхдээ Symfony2 ClassLoader бол прожектын чинь класуудыг дуудахад ашиглагддаг таньд хэрэгтэй ганц зүйл чинь.

autoload.php  файлд шинээр хоосон автомат уншигчыг үүсгэе.
<?php
// framework/autoload.php
require_once __DIR__.‘/vendor/symfony/class-loader/Symfony/Component/ClassLoader/UniversalClassLoader.php’;

use Symfony\Component\ClassLoader\UniversalClassLoader;

$loader = new UniversalClassLoader();
$loader->register();

Одоо та командын мөрнөөс (CLI) autoload.php ажиллуулж болох ба ямар ч алдаа, ямар ч үйлдэл гүйцэтгэхгүй:
$ php autoload.php

Чимэг: Symfony вэбсайтад ClassLoader компонентын тухай илүү дэлгэрэнгүй мэдээлэл байгаа.
Зөвөлгөө: Зохиогч (Composer) автоматаар таны суулгасан хамааралтай сангуудыг автомат дуудалтыг үүсгэдэг; ClassLoader компонентыг ашиглахын оронд та мөн дараах байдлаар дуудаж өгч болно.
vendor/.composer/autoload.php.

Бидний прожект
Фраймворкоо сараачиж 0-с нь эхлэхийн оронд бид ижил аппликэйш дахин дахин бичиж, тухайн хичээл бүр нэг шинэ ойлголтыг нэмж оруулж явна. PHP дээр байж болох хамгийн энгийн аппликэйшныг хийж үзэцгээе:
<?php

$input = $_GET[
‘name’];
printf(‘Hello %s’, $_GET[‘name’]);

Энэ хүрээд цувралын маань эхний хэсэг дуусаж байна. Дараагийн хэсэгт бид HttpFoundation Компонентыг танилцуулах ба бидэнд юуг авчрахыг харах болно.

Орчуулгад ашиглагдсан онцгой үгс:

  • autoloading – автомат дуудагч, ачаалагч
  • Composer – Зохиогч
  • Bootstrap  – Эхлүүлэгч
Advertisements

14 thoughts on “Өөрийн гэсэн фраймворкоо Symfony2 -ын Компонент дээр үүсгэе (хэсэг 1)

  1. symfony2 suulgah yawtsad iim aldaa garaad bhiin
    1 MAJOR PROBLEMS
    Major problems have been detected and must be fixed before continuing :
    Set the “date.timezone&#8221; setting in php.ini* (like Europe/Paris).
    * Changes to the php.ini file must be done in “/etc/php5/apache2/php.ini&#8221;.
    uul ni php.ini dotroos
    ;date.timezone = “Asia/Ulaanbaatar&#8221;
    ingej oruulaad apache restart hiisn ch aldaa ni arilahgui yum yaawal deer we

  2. Сайн уу. Эрхэмээ 😉
    Framework uusgeheer shiideed zaawriin daguu yawj bailaa. Getel hed heden asuudluud tulgarlaa. Miniii mashin derh Symfony maani /var/www/symfony dotor bairshiltai bga yumaa tegeed framework directory haa negtee suulgana geheer /var/www -s gadna uusgej bolno gesn ug uu? Tegeed composer.json file dotor
    {
    “require”: {
    “symfony/class-loader”: “2.1.*”
    }
    }
    jagsaana geheer composer.json oo haana uusgehiin, framework dotroo yum uu eswel symfony dotor uchnuun composer.json filuud bna tedgeer deer oruulah yum uu. kkk

      • Заавар өгсөнд баярлалаа

        /var/www/Symfony/vendor/framework
        гэсэн хавтсаа үүсгэчихсэн. Энэ дотроо composer.json болон composer.phar татаж авсан file аа хуулаад

        $ php composer.phar install

        комманд өгөхөөр

        Could not open input file: composer.phar

        ийм алдаа гараад байхын? 😉

  3. /var/www/Symfony dotor composer.json bolon composer.phar-ig tataw avaad tegeed php composer.phar install commandiig ajilluulna. Urd dund ni vendor havtas uuruu automataar uusne.

    • За ямар ч гэсэн эхний хэсэг болсон шүү. /var/www/framework гээд үүсгэчихлээ. Энэ бичлэг дээр гараад байгаа PHP storm гэж editor шиг аятайхан засварлагч юу байдаг юм бол. Би хувьдаа GEANY гэж засварлагч ашиглаж байгаа. PHPSTORM суулгах гэсэн лицензтэй гээд байна лдаа.
      Аан нээрээ баярласан шүү 😉

Хариулт үлдээх

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Өөрчлөх )

Twitter picture

You are commenting using your Twitter account. Log Out / Өөрчлөх )

Facebook photo

You are commenting using your Facebook account. Log Out / Өөрчлөх )

Google+ photo

You are commenting using your Google+ account. Log Out / Өөрчлөх )

Connecting to %s