Kodlash jarayonida gʻar koʻngil istagi
Loyihani qo'llab quvvatlash uchub buyerga bosing
Codeigniter frameworkida database managament juda yaxshi ishlab chiqarilgan. Sodda, tushunarli va ko’plab ma’lumotlar bazasi turlari bilan ishlay oladi. Eng asosiysi esa o’zida tayyor query builderi ham mavjud. Ya’ni siz obyekt orqali yo’naltirgan shartlar to’g’ridan-to’g’ri sqlga avtomatik o’tkaziladi va kerakli harakatlarni bajaraverasiz.
Lekin har doim ham codeigniter frameworkidan foydalanish imkoni mavjud emas, loyihangiz boshqa bir framework yoki umuman olgan mvc’siz qo’lda terilgan bo’lishi ham mumkin. Aynan shunday vaziyatda g’ar ko’ngil yuqoridagidek query builder istab qoladi. Yechim esa oson. Codeigniter database drayverini emulatsiya qilish kerak.
- Codeigniterning githubdagi sahifasidan
system/database
papkasini ko’chirib olamiz. - loyihamizning asosiy papkasida
emulate.php
faylini yaratamiz
Codeiginter open source loyiha bo’lganligi sabab community bilan birgalikda ishlab chiqiladi. Ikki tomondan qurib kelinayotgan yo’l tutashganda bir biriga mos kelishi uchun community sodda usuldan foydalanagan. Ya’ni framewokdagi bazaviy funskiyalariga (api desa ham bo’lar) database driverdan murojaat qilinadi xolos. MVC ish jarayonida esa database driver nusxasi yaratiladi.
Demak bazaviy funksiyalarda ma’lum birlarini ham emulate.php funskiyamizga ko’chirib olishimiz kerak bo’ladi.
Asosiy system
papkasi joylashuvini emulate.php faylimizga nisbatan berish:
define('BASEPATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
Log reporting funksiyasi:
function log_message($level, $message){ // warn, something
// Ma'lumotlarni o'zingiz istagan tarda qayta ishlashingiz mumkin
}
Driver turli qismlarda barqaror ishlashi uchun php versiyasini aniqlash:
function is_php($version) {
static $_is_php;
$version = (string) $version;
if ( ! isset($_is_php[$version])) {
$_is_php[$version] = version_compare(PHP_VERSION, $version, '>=');
}
return $_is_php[$version];
}
Tabga ko’ra application/config/database.php
faylini ham emulatsiya qilishingiz mumkin. Undan ko’rsa meni darajamdagi dangasa bo’lmasangiz frameworkni o’zidan foydalanavering :)
Dangasalar esa menga o’xshab shunchaki DSN’dan foydalanishlari mumkin:
mysqli://user:password@hostname/database
Demak yakuniy kod:
define('BASEPATH', dirname(__FILE__).DIRECTORY_SEPARATOR);
function log_message($level, $message){ // warn, something
// Ma'lumotlarni o'zingiz istagan tarda qayta ishlashingiz mumkin
}
function is_php($version) { //PHP haqidama'lumot
static $_is_php;
$version = (string) $version;
if ( ! isset($_is_php[$version])) {
$_is_php[$version] = version_compare(PHP_VERSION, $version, '>=');
}
return $_is_php[$version];
}
require 'database/DB.php';
$db = &DB('mysqli://user:password@hostname/database');
Emulatsiyani sinash uchun ma’lum misollar:
Bazadagi tablitsalar ro’yxatini olish:
$tables = $db->list_tables();
print_r($tables);
Eshonov Bahodir haqida ma’lumot olish:
$query = $db->get_where('users', [
'username' => 'kunglimni_tor_kuchasi',
'password' => 'sevilmadikSevmadik'
]);
if( $query->num_rows() > 0 ){
$info = $query->row_array();
print_r( $info );
}
Boshqa turdagi so’rovlar va manipulatsiyalar uchun quyidagi ikki havola orqali batafsil ma’lumot olishingiz mumkin. Faqatgina $this->db
obyektini o’zingizdagi$db
obyektiga o’zgartirib olish esdan chiqmasin.
https://codeigniter.com/userguide3/database/query_builder.html