АУСистем хийцгээе. Хичээл 5

Өмнөх хичээлүүд бид манай АУСистемийн цөм болох Article классыг бичсэн. Одоо сайтын хэрэглэгчийн талын скриптийг бичих болно. Юуны өмнө хэрэглэгчийн талын программыг агуулах index.php нэртэй файл үүсгэнэ. Энэ файл нь хэрэглэгчийн хөтөч дээр хуудсыг үзүүлэх юм. Файлыг сайтын үндсэн хавтаст хадгалан өгөөд доорх кодыг оруулна.

<?php

require( "config.php" );
$action = isset( $_GET['action'] ) ? $_GET['action'] : "";

switch ( $action ) {
  case 'archive':
    archive();
    break;
  case 'viewArticle':
    viewArticle();
    break;
  default:
    homepage();
}

function archive() {
  $results = array();
  $data = Article::getList();
  $results['articles'] = $data['results'];
  $results['totalRows'] = $data['totalRows'];
  $results['pageTitle'] = "Мэдээний архив | Сонин мэдээ";
  require( TEMPLATE_PATH . "/archive.php" );
}

function viewArticle() {
  if ( !isset($_GET["articleId"]) || !$_GET["articleId"] ) {
    homepage();
    return;
  }

  $results = array();
  $results['article'] = Article::getById( (int)$_GET["articleId"] );
  $results['pageTitle'] = $results['article']->title . " | Сонин мэдээ";
  require( TEMPLATE_PATH . "/viewArticle.php" );
}

function homepage() {
  $results = array();
  $data = Article::getList( HOMEPAGE_NUM_ARTICLES );
  $results['articles'] = $data['results'];
  $results['totalRows'] = $data['totalRows'];
  $results['pageTitle'] = "Сонин мэдээ";
  require( TEMPLATE_PATH . "/homepage.php" );
}

?>

Программын кодыг дэлгэрүүлэн авч үзье.

1. Тохиргооны файлыг оруулан ирнэ.
Программын эхний мөрөөр config.php файлыг оруулан ирснээр программын бүх тохиргоонуудыг скрипт ашиглах боломжийг бүрдүүлнэ. Энд бид include() биш require() функцийг ашигласан. Учир нь require() функц оруулан ирэх файл байхгүй тохиолдолд алдаа өгдөг.

2. action параметрийн утгыг авах.
$_GET['action'] параметрийн утгыг скриптэд ашиглах үүднээс түүнийг $action хувьсагчид авна. Гэхдээ эхлээд isset() функцийг ашиглан $_GET['action'] элемент утгатай байгааг шалгах хэрэгтэй. Хэрвээ утга тодорхойлогдоогүй байвал $action хувьсагчид хоосон мөр ("") утга олгоно. Форм, куки, хайлтын форм зэрэг хэрэглэгчээс ирүүлсэн утгуудыг хэрэглэхээсээ өмнө тодорхойлогдсон эсэхийг шалгаж байх нь программчлалын сайн дадал. Энэ нь системийн аюулгүй байдал талаасаа ч тэр программын ажиллагааны үед "undefined index" гэсэн сануулга гарахаас урьдчилан сэргийлдэг.  

3. Гүйцэтгэх ажиллагааг тодорхойлох.
Архив, материалыг үзүүлэх гээд цаашдын үйлдлийг тодорхойлохын тулд URL -ээр дамжин ирсэн action парамерийг switch блок шалгана. Хэрвээ URLaction параметр байхгүй бол нүүр хуудсыг гаргана.

  • archive() функц.
    Функц Article классын getList() аргыг ашиглан өгөгдлийн санд байгаа бүх материалыг үзүүлнэ. Функц getList() аргын үр дүн ба хуудасны гарчгийг $results ассоциатив массивт хадгалсанаар темплейт түүнийг хуудаст гаргах боломжтой болно. Төгсгөлд нь хуудсыг үзүүлэх хэвийг /темплейтийг/ оруулан ирнэ. Бид хэвийн талаар сүүлд үзэх болно.
  • viewArticle() функц
    Энэ функц хуудаст нэг материалыг үзүүлнэ. Функц URL -ийн articleId параметрийг аваад түүнийг тодорхойлогдсон эсэхийг шалгаад утгатай бол материалын обьектыг авахын тулд Article классын getById() аргыг дуудна. Аргаас буцаах үр дүнг үзүүлэх хэвд /темплейт/ ашиглахаар $results массивт хадгална. Хэрвээ материалын ID буюу articleId параметр байхгүй бол функц нүүр хуудсыг үзүүлнэ. Параметрийг шууд дамжуулахын тулд articleId -г (int) төрөлд хөрвүүлж байгаад анхаарна уу. Энэ нь кодод тооноос өөр утга дамжуулахаас сэргийлнэ.
  • homepage() функц.
    Кодын сүүлийн функц homepage() тохиргооны файлд тоог нь заан өгсөн сайтын нүүр хуудаст үзүүлэх материалын жагсаалтыг үзүүлнэ. Тохиргооны файлд HOMEPAGE_NUM_ARTICLES тогтмолын утгыг 5 гэж өгснийг санаж байгаа байх. Функц нь getList() аргад буцаах материалын тоог хязгаарлан өгсөн HOMEPAGE_NUM_ARTICLES параметрийг дамжуулж байгаагаараа л archive() функцээс ялгагдана.

Санамж:

  • Php кодыг сайн ойлгохын тулд сайтын Php хэл хэсгийн хичээлүүдийг үзэн ерөнхий ойлголтыг авах хэрэгтэй.
  • Программын кодыг өөрөө гараараа бичин өгөх нь хэлийн бичлэгийг сурахад их тустай байдаг.

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

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

Веб сайтад хэрэглэгчийн оруулсан мэдээллийн зөв эсэхийг шалгах ажил олон гардаг. Ийм асуудлыг мөрийн функцуудээр шийдвэрлэх нь нилээд хүндрэлтэй ажил болно. Тэгэхлээр ийм төрлийн ажиллагаанд хамгийн үр дүнтэй шийдэл нь тогтмол илэрхийлэл буюу (regular expression) ашиглах явдал юм. Эхэндээ тогтмол илэрхийлэл нь танд их ойлгомжгүй мэт санагдаж болох боловч маш бага хэмжээний мэдлэгийн хүрээнд олон хүнд асуудлуудлыг шийдвэрлэж болно.

Тогтмол илэрхийлэл.

Тогтмол илэрхийлэл гэдэг нь текстэн мөр юм. Тусгай тэмдэгтүүдээр үүсгэсэн хэвээр (шаблон) мөр дотор хэвэнд тохирох хэсгийг хайдаг. PHP –д POSIX, PCRE гэсэн хоёр төрлийн тогтмол илэрхийллийг ашигладаг. Бид хичээлээр POSIX төрлийг авч үзнэ. Тогтмол илэрхийллийг хэрхэн үүсгэдэг талаар үзэхийн өмнө хэвийн (шаблон) тухай ойлголттой танилцъя.
Хэв гэдэг ойлголт нь зөвхөн програмчлалын хэлэнд байдаг ойлголт биш. Жишээ нь бид php суулгасан директорт ороод хайлт хийх (F3) товчийг дараад php гэж бичээд хайлт хийхэд нэрэнд нь php гэсэн үг орсон бүх файлуудыг гаргаж ирдэг. Энд бид хэв (шаблон) үүсгэж өгсөн гэсэн үг. Одоо хайлтын нөхцлөө нарийвчилъя. Хэрвээ бид хайлт хийхдээ php? бичиж өгвөл энэ нь хайж байгаа файлын нэр нь php гэж эхлээд араас нь дурын тэмдэгтүүд байж болохыг заасан хэв болж байгаа болно. Ерөнхийдээ ийм зарчмаар PHP -д хэвийг үүсгэж өгдөг.

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

Cookie гэж юу болох, түүнийг үүсгэх, унших, устгах талаар Cookie-тэй ажиллах хичээлд үзсэн. Энэ хичээлээр Php -гийн Cookie ойлголтын талаар арай дэлгэрүүлэн авч үзье. Сервер хэрэглэгчээс POST эсхүл GET аргын алингаар нь ч бай өгөгдөл хүлээн авсан байлаа ч тэр хэрэглэгчийн талаар юу ч мэдэхгүй. Өөрөөр хэлбэл сервер өгөгдөл хүлээн аваад боловсруулаад үр дүнг бидэнд буцаана. Бид серверт шинээр эсхүл дахин шаардлагыг илгээхэд тэр бидний талаар юуг ч санахгүй тул таныг шинэ хэрэглэгч эсхүл үгүй гэдгийг мэддэггүй. Энэ нь хэн нэгэн сохор хөгжимчин гудамжинд тоглолт хийгээд зогсож байхад өнгөрч яваа хүн түүний хандивын хайрцагт мөнгө хийгээд дараа нь буцахдаа дахин хийхтэй төстэй зүйл. Хөгжимчин мөнгө хийсэн хүн түрүүнд нь өгсөн хүн үү эсхүл өөр хүн байв уу гэдгийг мэдэхгүй шүү дээ.

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

Удирдах операторууд нь програмд чухал үүрэг гүйцэтгэнэ. Эдгээрийг ашиглахгүйгээр ямар нэгэн томоохон програм бичнэ гэж байхгүй. Удирдах операторуудыг дотор нь нөхцөлт, давтагдах (цикл), нөхцөлт биш гэж 3 ангилж болно. Операторуудын тусламжтайгаар програм нь ажиллагаандаа өөрчлөлт оруулах, нэг ижил үйлдлийг давтан хийх эсвэл програмын ажиллагааг зогсоох хүртэл үйлдлүүдийг бие даан хийх боломжтой. Энэ сэдвийг сайн ойлгох нь програм зохиох цаашдын ажиллагаанд их үүрэгтэй.

Нөхцөлт оператор

Нөхцөлт оператор нь тодорхой нөхцлөөс хамаарч програмын ажиллагааны цаашдын үргэлжлэх боломжийг (зам) сонгох хэрэгсэл юм. Жишээ нь бид өдөр бүр цахим шуудангаа шалгахын өмнө хэрэглэгчийн ID, нууц үгээ оруулж өгдөг шүү дээ. Хэрэглэгчийн оруулсан мэдээллийг цахим шуудангийн програм шалгаад хэрвээ мэдээлэл үнэн бол шуудангийн хайрцагт нэвтрүүлж харин мэдээлэл буруу бол дахин оруулахыг шаарддаг. Энэ бол нөхцөлт операторыг ашиглаж байгаа тод жишээ юм.

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

Өгөгдөл, дэд программууд (процедур, функцууд) тэдгээрийн боловсруулалтууд хоорондоо холбоо багатай байдаг процедур программчлалын үзэл санааны хөгжлийн үр дүнд обьект хандалтад программчлал үүссэн. ОХП -ын зарчмыг анхлан дэвшүүлсэн программчлалын хэл бол Норвегийн эрдэмтэн Оле-Йохан Далийн (Ole-Johan Dahl) боловсруулсан Симула (Simula) байсан юм. 1967 онд гарсан энэхүү хэлэнд обьект, класс, виртуал аргууд гэх мэтийн дэвшилтэд санаануудыг гарган тавьсан боловч тэр үедээ эдгээрт нэг их анхаарал хандуулаагүй өнгөрчээ.

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

 

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

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

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

X санамсаргүй хувьсагчийн магадлалын тархалт дараах хүснэгтээр өгөгджээ. Математик дундаж нь хэд вэ?

X 2 5 3 1
P 0,4 0,2 0,3 0,1

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

 

тоонуудаас аль нь рационал тоонууд вэ?

A. a,b,e   B. a,d,e   C. b,c,e   D. b,c,d   E. a,c,d

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

 

1,(3) аравтын үелэх бутархайг энгийн бутархай болго.

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