№2 Dars - Yii ning yordamchi funksiyalari bilan ishlash

Biz odatda kattagina ish qilayotganimizda bir hil funksiyalar yozishimizga tog`ri keladi va bu ishni qayta qayta takrorlanishiga duch kelamiz. Misol uchun biror bir joyda 2 ta DateTime ning o`zaro ayirish masalasi bo`lsin. Bu ishni bir nechta joyda ishlatiladigan bo`lsa unda xar bir shu ishni qiladigan funksiyani yozib ketaveramiz. Uning o`rniga bir yordamchi funksiya sifatida bir joyda saqlasak o`sha funksiyani kerak bo`lganda o`sha nom ostida chaqirishimiz mumkin bo`ladi. Bunda funksiyani har safar yozib o`tirish shart bo`lmaydi. Bunda har bitta dasturlash tilining bunday imkoniyati mavjud. Shu kabi yii da ham bu imkoniyat mavjud. Keling aslida funksiyani qanday yaratish va undan qanday foydalanish haqida gaplashsak. Yordamchi classning ko`rinishi

Ushbu holat Classning standart ko`rinishi: Bunda ushbu faylni"protected/components/MyClass.php"

Ko`rinishdagi joyga saqlash kerak bo`ladi. Ya`ni "components" papkasining ichiga.

Yordamchi funksiya ushbu ko`rinishda elon qilinadi


Bunda birinchi bo`lib class nomi e`lon qilinmoqdi keyin ehtiyojdagi funksiya yozilmoqda. Shu yordamchi funksiyani chaqirish yo`li quyidagicha

Ya`ni class nomi , funksiya va funksiyaga beriladigan qiymat.

Endi yordamchi fayl e`lon qilish va uni ishlatish usulini bir kichik misol bilan ko`rib chiqamiz.

Yordamchi fayl nima? Yordamchi fayl bu helpers.php nomi ostida yaratiladigan fayl bo`lib unda bir qancha funksiyalar yozishingiz mumkin bo`ladi.

"protected/components/helpers.php"

<?php

function time_difference($t1, $t2)

{

list($hh1,$mm1,$ss1) = explode(':',$t1);

list($hh2,$mm2,$ss2) = explode(':',$t2);


$time2 = mktime((int)$hh2, (int)$mm2, (int)$ss2);

$time1 = mktime((int)$hh1, (int)$mm1, (int)$ss1);

$duration = $time2 >= $time1? $time2 - $time1: $time2 + 86400 - $time1;

$hh3 = floor($duration / 3600);


$mm3 = floor(($duration - $hh3 * 3600) / 60);

$ss3 = $duration - 3600 * $hh3 - 60 * $mm3;

$result = date('H:i:s', mktime($hh3, $mm3, $ss3));

return $result;

}

Ko`rib turganingizdek bu yerda class nomi yo`q shunchaki funksiya yaratilib ketmoqda. Bu holatda hozir biz ikkita vaqt orasidagi vaqtni topmoqdamiz

Bu faylni ham odatdagidek "components" papkasiga tashlanadi va nomini "helpers.php" saqlash kerak bo`ladi. Endi bu funksiyani quyidagicha chaqiriladi.

Ko`rib turganingizdek bu yerda class nomi yo`q shunchaki funksiya yaratilib ketmoqda. Bu holatda hozir biz ikkita vaqt orasidagi vaqtni topmoqdamiz

Bu faylni ham odatdagidek "components" papkasiga tashlanadi va nomini "helpers.php" saqlash kerak bo`ladi. Endi bu funksiyani quyidagicha chaqiriladi.



<?php echo time_difference($date1,$date2); ?>



Bu ishimiz xozirda to`g`ridan to`g`ri ishlamaydi. Chunki bu funksiyani qayerdan olishni bilmaydi

Shuning uchun quyidagicha ish qilamiz:


Config papkamizdagi main.php faylimizga yuqoridagi yo`lni ko`rsatib qo`yishimiz kerak bo`ladi.


Manba:


JONNY

Muallif haqida

JONNY Arduino, Java, C#, Android, Windows, Linux, Debian, Javascript. O'zbekistonni rivojlantiramiz! Dasturlash orqali vatanimizni yangi marralarga olib chiqamiz.


Qiziq bo‘ladi:


Birinchi bo‘ling!

Iltimos, fikr bildirish uchun saytga kiring yoki ro‘yxatdan o‘ting!