Хувьсагч , тогтмол , өгөгдлийн төрлүүд

Хичээлээр бид PHP хэлний үндсэн ойлголтууд болох хувьсагч, тогтмолуудын талаар авч үзнэ. Эдгээрийг сайн ойлгохгүйгээр програм бичнэ гэдэг хүндрэлтэй. Та ямар нэгэн програмчлалын хэл мэддэг гэсэн ч энэ хичээлийг үзээрэй. Учир нь PHP хэлэнд өгөгдөлтэй ажиллах онцлогууд байдаг.

Хувьсагч

Програмчлалын ямарч хэлэнд програмын ажиллагааны явцад өөрчлөгдөж байдаг өгөгдлийг хадгалах хэрэгсэл байдаг. Эдгээр нь хувьсагчид юм. Хувьсагч нь нэр болон утгаар тодорхойлогдоно.
Хувьсагч - өгөгдөл хадгалах хэрэгсэл.
Хувьсагчийн тухай илүү сайн ойлгохын тулд жишээ авч үзье.

<?php
   $number=5;                   // хувьсагчид 5 гэсэн утга олгож байна.
   $number=2*$number;           // $number хувьсагчийн утгыг 2 үржүүлнэ
   echo $number;                // $number хувьсагчийн утгыг үзүүлнэ
?>

Жишээнд $number нэртэй хувьсагчид (=) тэмдгийг ашиглан 5 гэсэн утгыг олгосон байна. Хувьсагч нь утга хадгалаад зогсохгүй тэдгээрийг өөрчилж болно. Хоёрдугаар мөрөнд $number хувьсагчийн утгыг хоёр дахин өсгөж байна. Хувьсагчийн утгыг үзүүлэхдээ түүнийг нэрийг ашиглаж байна.

PHP –д хувьсагчийн нэрийг өгөхдөө дараах дүрмийг баримтлах хэрэгтэй.

  • Ямарч хувьсагчийн нэр ($) долларын тэмдэгээр эхлэх ёстой
  • Түүний араас доогуур зураас (_) эсвэл үсэг байна. Тоо байж болохгүй.
  • Дараа нь үсэг, тоо, доогуур зураас байж болно. Харин хоосон зай (space) хувьсагчийн нэрэнд байж болохгүй
  • Хувьсагчийн нэр нь том жижиг үсгийг ялгана. Жишээ нь $number ба $Number хоёрыг нэг ижил хувьсагч гэж үзэхгүй.
<?php
   $2_var=5;                 // буруу нэртэй хувьсагч
   $_2_var=2;                // энэ бол зөв нэртэй хувьсагч
   $color;                   // өнгө заасан хувьсагч
   $user_id;                 // хэрэглэгчийн кодыг заасан хувьсагч
?>

Ихэнх програм зохиогчид баримталдаг PHP Coding Standard гэдэг дүрэм байдаг. Энэ дүрмээр хувьсагчийн нэрийг жижиг үсгээр бичиж үгийг доогуур зураасаар тасалдаг. Дээрх жишээний сүүлийн хоёр мөрийг хар. Хувьсагчийн нэрээр түүнд хадгалагдаж байгаа өгөгдлийг мэдэж болохоор өгөх нь их хэмжээний хувьсагч ашигласан програм зохиоход хэрэгтэй байдаг. Гэхдээ хэт их урт нэр өгөх нь ажиллагааг хүндрүүлдэг гэдгийг санаарай.

Өгөгдлийн төрлүүд

PHP –д дөрвөн (Integer, Double, Boolean, String) энгийн, хоёр (Array, Object) холимог төрлүүд байдаг.

Integer

Энэ төрөл нь хэмжээний хувьд хязгаарлагдсан бүхэл тоон олонлогоор тодорхойлогдоно. Жишээ нь 32 битийн платформын хувьд энэ олонлог нь -2,147,482,648 аас 2,147,482,647 хооронд байдаг. Integer төрлийн өгөгдлүүд 16, 10, 8 гээд төрөл бүрийн тоон системээр бичигдэж болно. Жишээ нь

<?php
  // Доорх гурван тоо нь аравтын системээр 347
   $oct_int_number=0475;                 // наймтын системийн тоо 0 эхэлнэ
   $dec_int_number=347;                  // энэ бол аравтын систем
   $hex_int_number=0X130;                // 16 системийн тоо 0Х эхэлнэ
?>

Double

Double (эсвэл Float) төрөл нь бодит тоон олонлогт харьяалагдана. Өөрөөр хэлбэл өндөр нарийвчлалтай бутархай тоонууд юм. Энэ төрлийн хувьсагчийг том тоонууд болон өндөр нарийвчлалтай тооцоонд ихэвчлэн ашигладаг. Жишээ нь

<?php
   $first_dbl_number=111.99;             
   $sec_dbl_number=4.5e3;                 // энэ бол 4500
   $trd_dbl_number=5E-5;                  // энэ бол 0.00005
?>

Boolean

Хамгийн энгийн өгөгдлийн төрөл нь Boolean юм. Учир нь энэ төрөл нь үнэн (True), худал (False) гэсэн хоёрхон утгатай байдаг. Энэ төрлийг аливаа утгыг үнэн худал гэдгийг шалгахад голдуу ашигладаг. FALSE, TRUE утга нь том жижиг бичлэгийг ялгадаггүй тул false, true гэж бичиж болно.

String

PHP –д String төрөл нь тэмдэгтийн мөрөнд хамаарах бөгөөд уртын хэмжээ нь бараг хязгааргүй байдаг. Энэ төрлийн талаар Мөр хичээлд дэлгэрэнгүй үзэх болно. Жишээ нь

<?php
   $string="Hello, World!";                  
  $null_string="";                    // энэ бол хоосон мөр
?>

Array төрлийн талаар Массив хичээлд үзэх бөгөөд Object төрлийг обьект хандалттай програмчлалд хэрэглэдэг. Эдгээрээс гадна PHP нь (resource, NULL) гэсэн 2 тусгай төрөл болон (mixed, number, callback) гэсэн дундын төрлүүдийг дэмждэг. Эдгээр төрлүүд нь практикт бараг ашиглагддаггүй тул бид хичээлүүдээр эдгээрийн талаар үзэхгүй.

Хувьсагчийг тодорхойлох

Delphi, Pascal зэрэг програмчлалын олон хэлэнд хувьсагчийг урьдчилан ямар төрөлд хамаарахыг заавал зарладаг. Програмд уг хувьсагчид тохирохгүй утга олгоход алдаа гардаг. Энэ тал дээр PHP нь илүү зөөлөн. Энд хувьсагчийг зарлахдаа ямар төрлийнх болохыг заах албагүй. Програмд хувьсагчид утга олгоход төрлийг автоматаар тохируулан өөрчилдөг. Үүнээс гадна програмд нэг хувьсагчид олон төрлийн өгөгдлийг дараалуулан хадгалаж болдог. Энэ чөлөөтэй байдал нь програм зохиогчоос хувьсагчийн төрлийн хяналтыг нарийн болгохыг шаарддаг. Хувьсагчийн төрлийг gettype() функцээр мэддэг. Функцын талаар Функцууд хичээлээс үзээрэй.

PHP -д хувьсагчийн төрөл хэрхэн өөрчлөгдөхийг жишээгээр авч үзье.

<HTML>
   <HEAD>
      <TITLE>Хувьсагчийн төрлийг өөрчлөх</TITLE>
   </HEAD>
   <BODY>
      <?php
         $test_var=12.63;                   // 12.63 утгыг олголлоо
         echo gettype($test_var);      // double гэж гарна
         echo "<br>";
         echo $test_var;                    // 12.63 гэж гарна
         echo "<br>";
         settype($test_var, string);    // хувьсагчийг string төрөл болгоно
         echo gettype($test_var);      // string гэж гарна
         echo "<br>";
         echo $test_var;                    // 12.63 гэж гарна
         echo "<br>";
         settype($test_var, integer); // хувьсагчийг integer төрөл болгоно
         echo gettype($test_var);       // integer гэж гарна
         echo "<br>";
         echo $test_var;                    // 12 гэж гарна
         echo "<br>";
         settype($test_var, boolean);       // хувьсагчийг boolean төрөл болгоно
         echo gettype($test_var);       // boolean гэж гарна
         echo "<br>";
         echo $test_var;                    // 1 гэж гарна
         echo "<br>";
         $test_var="num10";           
         settype($test_var, integer);  // хувьсагчийг integer төрөл болгоно
         echo $test_var;                    // 0 гэж гарна
         echo "<br>";
         $test_var="10num";           
         settype($test_var, integer);  // хувьсагчийг integer төрөл болгоно
         echo $test_var;                    // 10 гэж гарна
     ?>
  </BODY>
</HTML>

Энд settype() функц нь хувьсагчийн төрлийг өөрчилнө. Харин gettype() функц нь хувьсагчийн төрлийг авчирна. Жишээнээс хувьсагчийн төрөл нь тодорхой дүрмээр өөрчлөгдөж байгааг харж болно. Жишээг өөрсдөө туршин ажиллуулаарай. Энэ дүрэмээс заримыг нь дурдвал

Boolean төрөлд шилжихдээ

  • Тэг (0) бүхэл тоо FALSE болно
  • (0.0) бутархай тоо FALSE болно
  • Хоосон мөр эсвэл "0" мөр FALSE болно
  • Бусад бүх утгууд TRUE болно

Integer төрөлд шилжихдээ

  • FALSE – 0 харин TRUE -1 болно
  • Бодит тооны бутархай хэсэг нь орхигдон бүхэл тоо болно. /Жишээг хар/
  • Хэрвээ мөр нь тоогоор эхлээгүй бол 0, эсрэг тохиолдолд тухайн тоо болно. /Жишээг хар/

String төрөлд шилжихдээ

  • FALSE – хоосон мөр харин TRUE -"1" болно
  • Дурын тоо нь тэр хэвээрээ мөр болно

Хувьсагчийг холбох

PHP –д холбоос гэсэн ойлголт байдаг. Үүнийг ойлгохын тулд жишээ авч үзье.

<HTML>
   <HEAD>
      <TITLE>Хувьсагчид холбоос тогтоох</TITLE>
   </HEAD>
   <BODY>
       <?php
          $a=1;              //  $a хувьсагчид 1 гэсэн утга олголлоо
          $b=$a;             //  $a-гийн утгыг $b –д олгох
          $c=&$a;          //  $c-г $a –тай холбох
          $a=5;              //  $a хувьсагчид 5 гэсэн утга олголлоо
          echo $a;           //  5 гэж гарна
          echo "<br>";
          echo $b;           //  1 гэж гарна
          echo "<br>";
          echo $c;           //  5 гэж гарна
       ?>
   </BODY>
</HTML>

Жишээнд бид эхлээд $a хувьсагчид 1 гэсэн утга олгоод дараа нь $b  хувьсагчид $a хувьсагчийн утгыг олгосон. Одоо $a ,$b хувьсагчдын утга ижилхэн. Гэхдээ эдгээр хувьсагчдын аль нэгний утгыг өөрчилөхөд нөгөөгийнхөө утганд ямарч нөлөө үзүүлэхгүй. Харин & тэмдэгтээр бид $c хувьсагчийг $a хувьсагчтай холбон өгч байна. Одоо эдгээр хувьсагчдын утга үргэлж ижилхэн байх болно. Аль нэг хувьсагчийн утгыг өөрчлөхөд нөгөө хувьсагчийн утга даган өөрчлөгдөнө.

Динамик хувьсагч

PHP –д хувьсагчийн нэр нь хувьсагч агуулж байдаг хувьсагчийг ашиглаж болдог. Үүнийг шууд ойлгоход хүндрэлтэй тул жишээгээр авч үзье.

<HTML>
   <HEAD>
      <TITLE>Динамик хувьсагч</TITLE>
   </HEAD>
   <BODY>
     <?php
         $name="id";             //  $name хувьсагч id гэсэн утгатай
         $id=5;                  //  $id-гийн утга нь 5
         echo $$name;            //  5 гэж гарна
     ?>
   </BODY>
</HTML>

$$name төрлийн хувьсагчдыг динамик хувьсагч гэдэг. Програмын явцад олон тооны хувьсагч үүсгэх хэрэгтэй үед ийм хувьсагчдыг голдуу ашигладаг. Жишээ авч үзье.

<HTML>
   <HEAD>
      <TITLE>Динамик хувьсагчийг ашиглах арга</TITLE>
   </HEAD>
   <BODY>
      <?php
         $name="age";
         $age=18;
         echo "<b>$$name</b><br>";         //  $age гэж гарна
         echo "<b>${$name}</b><br>";       //  18 гэж гарна
         echo "<b>${age}</b>";             //  18 гэж гарна
     ?>
  </BODY>
</HTML>

Энд динамик хувьсагчийг гаргах бас нэг аргыг үзүүлсэн. Хэрвээ хувьсагч хашилтанд байгаа тохиолдолд ( {} ) их хаалтыг ашиглах хэрэгтэй. Эс тэгвээс $age гэж гарч ирнэ.

Тогтмолууд

Ямар нэгэн утгыг тэмдэглээд бүх програмын туршид ашиглаж болно. Эдгээрийг PHP -д тогтмол утгууд гэдэг.

Тогтмол гэдэг нь өөрчлөгдөхгүй утга юм.

PHP -д тогтмол утгыг тодорхойлохдоо define() функцыг ашиглана. Бичлэгийн дүрэм нь

            define(<Тогтмолын нэр> , <утга>);

Жишээ нь

<HTML>
   <HEAD>
      <TITLE>Тогтмолыг тодорхойлох</TITLE>
  </HEAD>
   <BODY>
      <?php
         define("ADMIN_NAME","Дорж");
         define("NUMBER_E", 2.71828);
         echo ADMIN_NAME;
         echo "<br>";
         echo NUMBER_E *2;         
     ?>
  </BODY>
</HTML>

Тогтмолоор мөр, тоо, бүхэл тоо, логик утга тодорхойлж болохоос гадна тэдгээрийг үйлдэлд ашиглаж болно. Тогтмолын нэрэнд жижиг том үсгийн алийг ч ашиглаж болдог. Гэхдээ жишээнд бид тогтмолын нэрийг ADMIN_NAME, NUMBER_E гэж өгсөн байгааг анхаар. Энэ нь бид PHP Coding Standard дүрмийг баримталж байгааг илтгэнэ. Дүрмээр тогтмолын нэрийг том үсгээр үгийг хооронд нь доогуур зураасаар зааглаж өгдөг. Тогмолын нэр нь том жижиг үсгийг ялгана. Жишээ нь ADMIN_NAME ба ADMIN_name гэсэн тогтмолууд ижил биш. Тогтмолыг зарласны дараа програмын код дотор утгыг өөрчилж болдоггүй. Жишээ нь

<?php
    define("CONSTANT",5);
    CONSTANT=2;
?>

програмын кодыг ажиллуулахад алдаа гарна. PHP –д өөрийн тогтмолууд байдаг. Тогтмолын нэрийг өгөхдөө эдгээртэй нэрийг давхардуулан өгөхөөс болгоомжлох хэрэгтэй. Ямар нэгэн тогтмол байгаа эсэхийг defined() функцээр мэдэж болно. Тогтмолын нэрийг функцын параметр болгон өгөхөд функц 1 утга буцаавал тогтмол тодорхойлогдсон эсрэг тохиолдолд 0 утгыг буцаадаг.

Урьдчилан тодорхойлогдсон тогтмолууд

PHP –д өөрийн тогтмолууд байдаг. Эдгээрийг урьдчилан тодорхойлогдсон тогтмолууд гэдэг ба гол зориулалт нь системийн мэдээллийг хадгалах байдаг. Жишээ нь PHP_VERSION ба PHP_OS нь PHP –н хувилбар болон серверийн үйлдлийн системийн нэрийг агуулна.
Үүнээс гадна хэрэглэгээнээс хамаарч утга нь өөрчлөгдаж байдаг хэсэг тогтмолууд байдаг. Жишээ нь __LINE__ , __FILE__ тогтмолууд нь мөрийн дугаар, файлын нэрийг агуулдаг. Эдгээр тогтмолын нэрийг том жижиг аль ч байдлаар бичиж болдог. Жишээн дээр авч үзье.

<HTML>
   <HEAD>
      <TITLE>Урьдчилан тодорхойлогдсон тогтмолууд</TITLE>
   </HEAD>
   <BODY>
      <?php
         echo "PHP хувилбар :";
         echo PHP_VERSION;
         echo "<br>";
         echo "Үйлдлийн систем :";
         echo PHP_OS;
         echo "<br>";
         echo "Мөрийн дугаар :";
         echo __LINE__;
         echo "<br>";
         echo "Ажиллаж байгаа файл :";
         echo __file__;
     ?>
   </BODY>
</HTML>

Мэдээлэл таалагдсан бол найзуудтайгаа хуваалцаарай.

  Нээгдсэн тоо: 3520 Нийтийн

Ямар ч хэлийг судлахын өмнө бичлэгийн дүрэмтэй танилцах хэрэгтэй. Програмын хэлийг үзэж эхлэхэд бараг уламжлал болсон жишээнээс эхэлье. Энэ нь мэдээж “Hello, Word!” үгийг броузерын дэлгэцэнд гаргах юм. Текстэн редактораа нээгээд доорх жишээг оруулаад файл (жишээ нь hello.php) болгон хадгална.

<?php
echo"Hello, World!";
?>

Файлаа веб серверийнхээ үндсэн хавтаст шилжүүлэн хуулаад веб броузерынхаа хаягийн мөрөнд http://localhost/hello.php гэж бичээд Enter дарна.

  Нээгдсэн тоо: 4116 Төлбөртэй

Бүх л програмчлалын хэлүүд өгөгдлийн сантай ажилладагийн адилаар PHP нь бас өгөгдлийн сантай ажиллана.
Өгөгдлийн сан - мэдээллийг хадгалагч. Ер нь үүнээс өөр төрөл бүрийн дэлгэрэнгүй тодорхойлолтууд байдаг хэдий ч бид үүгээр хязгаарлахад болно. Өгөгдлийн сан нь мэдээллүүдийг хадгалах тул тэдгээртэй ажиллах програм хэрэгтэй. Иймээс ӨСУС (өгөгдлийн санг удирдах систем) бий болсон. PHP нь өгөгдлийн сантай зөвхөн ӨСУС –ээр дамжин ажилладаг. Өгөгдлийг хадгалах зохион байгуулалтаараа сангууд хэд хэдэн төрөлд хуваагдана. Гэхдээ өнөөдөр холбоост өгөгдлийн сангийн модел нь хамгийн өргөн дэлгэрсэн хэлбэр бөгөөд бид энэ санг авч үзэх болно. Ямар ч холбоост өгөгдлийн сан нь хүснэгтүүдээс бүрдэнэ. Хүснэгт нь багана (талбар), мөр (бичлэгээс) бүрдэнэ. Жишээ нь

  Нээгдсэн тоо: 3973 Нийтийн

Php хэлийг ашиглан веб сайт хийх ажил шинээр эхэлж байгаа хүмүүст ойлгомж муутай санагдах нь элбэг тохиолдоно. C# NET, Visual Studio зэрэг дээд түвшингийн хэлний фреймворк ашиглан хэрэглэгчийн компьютерт суулган ажилладаг программ зохиож байсан хүмүүст веб сайт боловсруулах ажил эхлээд их төвөгтэй мэт санагдана. Учир нь Php, MySql ашиглан сайт хийхийн тулд та сервер болон хэрэглэгчийн талын бүх зүйлээ өөрөө хийх хэрэгтэй болдог. Ийм хэмжээний ажлыг кодлон веб сайт боловсруулна гэвэл мэдээжээр их хугацаа орох нь ойлгомжтой. Тэгвэл сайтыг хэрхэн хурдан боловсруулах вэ? гэсэн асуулт гарч ирдэг. Энд л Php фреймворк, Агуулгын удирдах систем буюу CMS (Content management system) гэсэн ойлголт гарч ирдэг.

  Нээгдсэн тоо: 3921 Бүртгүүлэх

Обьект хандалтад программчлалын үндэс болсон класс нь абстракт төрлийнх байж болдог. Хичээлээр абстракт класс ба аргууд гэж юу болох, хэрхэн зарлах, хаана ашиглах талаар үзэх болно. Абстракт класс гэж юу вэ?
Обьектыг шууд үүсгэж болдоггүй классыг абстракт класс гэдэг. Ийм төрлийн классыг үүсгэхдээ abstract гэсэн түлхүүр үгийг ашиглана.
Жишээ нь бидэнд Car гэсэн класс байна гэж үзье. Түүнийг abstract түлхүүр үгийг ашиглан абстракт класс болгоод дараа нь түүнээс обьект үүсгэх гээд үзье.

Үйл явдал /event/ тодорхой үйлдэл хийгдсэн талаар системд мэдэгддэг. Хэрвээ бид энэхүү үйлдлийг ажиглах хэрэгтэй бол яг энд…

Нээгдсэн тоо : 124

 

Манай төсөл олон хуудсуудтай болон тэдгээрийн хооронд динамикаар шилжилт хийж байгаа ч тухайн үед шилжилт хийгдсэн хуудаст тохирох…

Нээгдсэн тоо : 185

 

Зочин (Visitor) паттерн классуудыг өөрчлөхгүйгээр тэдгээрийн обьектуудын үйлдлийг тодорхойлох боломжийг олгоно. Зочин хэвийг ашиглахдаа классуудын хоёр ангилалыг тодорхойлно.…

Нээгдсэн тоо : 154

 

Лямбда-илэрхийлэл нь нэргүй аргын хураангуй бичилтийг илэрхийлнэ. Лямбда-илэрхийлэл утга буцаадаг, буцаасан утгыг өөр аргын…

Нээгдсэн тоо : 278

 

Кодийн сайжруулалт /рефакторинг/ хичээлээр програмийн кодоо react -ийн зарчимд нийцүүлэн компонентод салгасан.…

Нээгдсэн тоо : 309

 

Хадгалагч (Memento) хэв обьектын дотоод төлвийг түүний гадна гаргаж дараа нь хайрцаглалтын зарчмыг зөрчихгүйгээр обьектыг сэргээх боломжийг олгодог.

Нээгдсэн тоо : 317

 

Делегаттай нэргүй арга нягт холбоотой. Нэргүй аргуудыг делегатийн хувийг үүсгэхэд ашигладаг.
Нэргүй аргуудын тодорхойлолт delegate түлхүүр үгээр…

Нээгдсэн тоо : 378

 

Математикт харилцан урвуу тоонууд гэж бий. Ямар нэгэн тооны урвуу тоог олохдоо тухайн тоог сөрөг нэг зэрэг дэвшүүлээд…

Нээгдсэн тоо : 380

 

Төсөлд react-router-dom санг оруулан чиглүүлэгчдийг бүртгүүлэн тохируулсан Санг суулган тохируулах хичээлээр бид хуудас…

Нээгдсэн тоо : 454

 
Энэ долоо хоногт

Нээгдсэн тоо : 741

 

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

Жич: Маш сонирхолтой гоё бодлого. Оролдоод үзээрэй.

Нээгдсэн тоо : 1067

 

илэрхийллийн хялбарчил.

Нээгдсэн тоо : 320