Yangi formatda davom etish uchun: https://uzfor.net/view.php?act=post&id=42203
Postga havola
MrAnonim [143] [off]
JohnCMS 3-dars
Bir nimani eslatib o'tsam, bu darslik alish akamiziki
Bir nimani eslatib o'tsam, bu darslik alish akamiziki
JohnCMS #3 dars (+/-)
Salom aziz do'stlar! JohnCMS bo'yicha tajribalarni davom ettiramiz. Bugun userlarning ma'lumotlari bilan ishlashni, aniqrog'i userni "aks ettirish"ni o'rganamiz. Bu ham yadroning funksiyalaridan biri, va bu funksiya ishimizni yahshigina yengillashtirib beradi.
functions::get_user($id)
ushbu funksiyani ishlash prinspi oddiy, belgilangan ID raqamdagi user ma'lumotlari joylashgan qatorni (mysql bazasidagi qatorni) belgilab beradi.
Masalan:
$admin = functions::get_user('1');
echo $admin['name'];
ko'rib turganingizdek bu mysql so'rov yozib vaqt ketkazishga zarurat qoldirmaydi. Bu yo'l bilan `users` jadvalidagi har bir ustun ma'lumotini aks ettirish mumkin. Menimcha bu funksiya shundoq ham tushunarli, endi asosiy funksiya haqida gaplashsak:
functions::display_user($user = 0, $arg = array())
Bu funksiya userning avatari, niki, statusi, IP-adresi va user-agent ma'lumotlarni aks ettirish va bu ma'lumotlarga qo'shimcha ma'lumotlar (masalan: xabarlar)ni biriktirishda ishlatiladi va eng men uchun ham eng kerakli funksiyalardan biri hisoblanadi.
Agar biz admin haqidagi malumotlarni (avatar, nik, status, ON-Off, IP, user-agent) aks ettirmoqchi bo'lsa, quyidagicha yo'l tutamiz:
$admin = functions::get_user('1');
echo functions::display_user($admin);
Ko'rib turganingizdek, bu funksiyaga userning ID raqami kamlik qiladi, unga shu ID joylashgan qatorni to'laligicha biriktirish zarur. Yuqoridagi ikkita funksiya sharofati bilan ortiqcha kodlar "boshog'riq"idan qutulyapmiz.
E'tibor bersangiz, yuqorida array() keltirilgandi, lekin biz uni ishlatmadik. Endi shu arrayni ishlatishni ham o'rganamiz. Avvalo array() nima ekani haqida to'xtalsak: bu bir qancha malumotlarni bitta o'zgaruvchiga biriktirish yo'lidir. Biz bu arrayga quyidagi ma'lumotlarni biriktira olamiz:
'header',
'body',
'sub'
'header'ga kiritilgan ma'lumot userning niki yonida aks ettiriladi. Bunga asosan yozilgan xabarning vaqtini, javob berish tugmalarini kiritsak to'g'ri bo'ladi
'body'ga esa, tana qismi - nik/statuslar va user-agent ma'lumotlari oralig'iga kiritiladigan ma'lumot biriktiriladi. Bunga qoldirilgan xabar matnini kiritish to'g'ri bo'ladi, yoki, masalan statusini (nik ostidagi status emas, klass bosiladigan status) kiritish ham mumkin.
'sub' bunda ostki ma'lumot joylanadi. Sub classda userning user agenti va IP ma'lumotlari kiritiladi. Arrayning sub ma'lumotida esa shu malumot yuqorisida turadi. Bunga misol tariqasida O'chirish | Tahrirlash tugmalarini kiritish mumkin. Demak, tushunchaga ega bo'ldingiz deb o'ylayman, endi buni qo'llashni mashq qilib ko'ramiz.
$user = functions::get_user('7');
$head = '';
$matn = $user['about'];
$sub = '';
$arg = array(
'header' => $head,
'body' => $matn,
'sub' => $sub
);
echo functions::display_user($user, $arg);
Taxlil qilamiz, ma'lumotda [ON] yoki [Off] belgisi yonida ma'lumot chiqishi kerak emas deb hisoblab, headerni bo'sh qoldirdik, yoki NULLga teng o'zgaruvchi biriktirdik. Body qismiga esa userning "O'zi haqida" yoziladigan malumotlarini chiqardik va sub class ham NULL bo'ldi. Bu kod nimani aks ettirishini esa, tajribada sinab bilib olasiz. Endi bu funksiyaga qo'shimcha buyruqlar yuklashni o'rganamiz
$arg = array(
'header' => $head,
'body' => $matn,
'sub' => $sub,
'stshide' => 1
);
'stshide' buyrug'i userning statusini (nik ostidahi status) yashiradi.
$arg = array(
'header' => $head,
'body' => $matn,
'sub' => $sub,
'iphide' => 1
);
'iphide' esa user-agent va IP ma'lumotlarni yashiradi.
core::$user_set['avatar'] = 0;
echo functions::display_user($user, $arg);
yuqoridagi core::$user_set['avatar'] = 0 buyrug'i bilan biz ma'lumotlarda avatar aks etmasligi kerakligini uqtirdik. Ko'rib turganingizdek, bu buyruq array()ga kiritilmaydi.
Shuning bilan bugungi darsni ham tamomlaymiz. O'zingiz mustaqil ravishda yuqoridagi funksiyalarni turli tarzda tajriba qilishdan to'xtamang. Darsni baholash ham esdan chiqmasin e'tiboringiz uchun rahmat
functions::get_user($id)
ushbu funksiyani ishlash prinspi oddiy, belgilangan ID raqamdagi user ma'lumotlari joylashgan qatorni (mysql bazasidagi qatorni) belgilab beradi.
Masalan:
$admin = functions::get_user('1');
echo $admin['name'];
ko'rib turganingizdek bu mysql so'rov yozib vaqt ketkazishga zarurat qoldirmaydi. Bu yo'l bilan `users` jadvalidagi har bir ustun ma'lumotini aks ettirish mumkin. Menimcha bu funksiya shundoq ham tushunarli, endi asosiy funksiya haqida gaplashsak:
functions::display_user($user = 0, $arg = array())
Bu funksiya userning avatari, niki, statusi, IP-adresi va user-agent ma'lumotlarni aks ettirish va bu ma'lumotlarga qo'shimcha ma'lumotlar (masalan: xabarlar)ni biriktirishda ishlatiladi va eng men uchun ham eng kerakli funksiyalardan biri hisoblanadi.
Agar biz admin haqidagi malumotlarni (avatar, nik, status, ON-Off, IP, user-agent) aks ettirmoqchi bo'lsa, quyidagicha yo'l tutamiz:
$admin = functions::get_user('1');
echo functions::display_user($admin);
Ko'rib turganingizdek, bu funksiyaga userning ID raqami kamlik qiladi, unga shu ID joylashgan qatorni to'laligicha biriktirish zarur. Yuqoridagi ikkita funksiya sharofati bilan ortiqcha kodlar "boshog'riq"idan qutulyapmiz.
E'tibor bersangiz, yuqorida array() keltirilgandi, lekin biz uni ishlatmadik. Endi shu arrayni ishlatishni ham o'rganamiz. Avvalo array() nima ekani haqida to'xtalsak: bu bir qancha malumotlarni bitta o'zgaruvchiga biriktirish yo'lidir. Biz bu arrayga quyidagi ma'lumotlarni biriktira olamiz:
'header',
'body',
'sub'
'header'ga kiritilgan ma'lumot userning niki yonida aks ettiriladi. Bunga asosan yozilgan xabarning vaqtini, javob berish tugmalarini kiritsak to'g'ri bo'ladi
'body'ga esa, tana qismi - nik/statuslar va user-agent ma'lumotlari oralig'iga kiritiladigan ma'lumot biriktiriladi. Bunga qoldirilgan xabar matnini kiritish to'g'ri bo'ladi, yoki, masalan statusini (nik ostidagi status emas, klass bosiladigan status) kiritish ham mumkin.
'sub' bunda ostki ma'lumot joylanadi. Sub classda userning user agenti va IP ma'lumotlari kiritiladi. Arrayning sub ma'lumotida esa shu malumot yuqorisida turadi. Bunga misol tariqasida O'chirish | Tahrirlash tugmalarini kiritish mumkin. Demak, tushunchaga ega bo'ldingiz deb o'ylayman, endi buni qo'llashni mashq qilib ko'ramiz.
$user = functions::get_user('7');
$head = '';
$matn = $user['about'];
$sub = '';
$arg = array(
'header' => $head,
'body' => $matn,
'sub' => $sub
);
echo functions::display_user($user, $arg);
Taxlil qilamiz, ma'lumotda [ON] yoki [Off] belgisi yonida ma'lumot chiqishi kerak emas deb hisoblab, headerni bo'sh qoldirdik, yoki NULLga teng o'zgaruvchi biriktirdik. Body qismiga esa userning "O'zi haqida" yoziladigan malumotlarini chiqardik va sub class ham NULL bo'ldi. Bu kod nimani aks ettirishini esa, tajribada sinab bilib olasiz. Endi bu funksiyaga qo'shimcha buyruqlar yuklashni o'rganamiz
$arg = array(
'header' => $head,
'body' => $matn,
'sub' => $sub,
'stshide' => 1
);
'stshide' buyrug'i userning statusini (nik ostidahi status) yashiradi.
$arg = array(
'header' => $head,
'body' => $matn,
'sub' => $sub,
'iphide' => 1
);
'iphide' esa user-agent va IP ma'lumotlarni yashiradi.
core::$user_set['avatar'] = 0;
echo functions::display_user($user, $arg);
yuqoridagi core::$user_set['avatar'] = 0 buyrug'i bilan biz ma'lumotlarda avatar aks etmasligi kerakligini uqtirdik. Ko'rib turganingizdek, bu buyruq array()ga kiritilmaydi.
Shuning bilan bugungi darsni ham tamomlaymiz. O'zingiz mustaqil ravishda yuqoridagi funksiyalarni turli tarzda tajriba qilishdan to'xtamang. Darsni baholash ham esdan chiqmasin e'tiboringiz uchun rahmat