CodeIgniter प्रोजेक्ट बनाएं और चलाएं
CodeIgniter क्या है?
CodeIgniter एक हल्का व तेज़ PHP वेब एप्लिकेशन विकास फ्रेमवर्क है। यह Model-View-Controller (MVC) डिज़ाइन पैटर्न का पालन करता है और डेवलपर्स को त्वरित और फीचर-रिच वेब एप्लिकेशन बनाने में सहायता करता है। अपनी सरल संरचना, शानदार प्रदर्शन और आसान सीखने की क्षमता के कारण यह कई PHP डेवलपर्स की पहली पसंद बन गया है।
CodeIgniter की मुख्य विशेषताएँ और फायदे
- हल्का कोर: CodeIgniter का कोर सिस्टम बहुत ही न्यूनतम और केवल आवश्यक घटकों के साथ आता है, जिससे इसकी लोडिंग अत्यंत तेज़ रहती है।
- बेहतर प्रदर्शन: यह फ्रेमवर्क उच्च ट्रैफिक को संभालने में सक्षम है और शानदार एप्लिकेशन परफॉरमेंस प्रदान करता है।
- आसान शुरुआत: स्पष्ट दस्तावेज़ और सहज API के साथ, सीखना और काम करना बेहद आसान है।
- अत्यधिक लचीला: आपके प्रोजेक्ट की ज़रूरतों के अनुसार आप थर्ड पार्टी लाइब्रेरीज़ जोड़ सकते हैं और कस्टमाइज़ेशन आसानी से कर सकते हैं।
- सक्रिय समुदाय: बड़ा और सक्रिय डेवलपर्स समुदाय बेहतरीन संसाधन व सहायता उपलब्ध कराता है।
CodeIgniter छोटे प्रोजेक्ट्स से लेकर बड़े एंटरप्राइज़ एप्लिकेशन तक हर तरह की डेवेलपमेंट आवश्यकता के लिए उपयुक्त है।
ServBay के साथ CodeIgniter डेवेलपमेंट एनवायरनमेंट सेटअप
ServBay एक macOS के लिए बनाया गया लोकल वेब डेवेलपमेंट टूल है, जिसमें PHP, डेटाबेस (MySQL, PostgreSQL, MongoDB), कैशिंग (Redis, Memcached), वेब सर्वर (Caddy, Nginx, Apache) आदि कई सॉफ्टवेयर पैकेज और सुव्यवस्थित मैनेजमेंट इंटरफेस शामिल हैं। ServBay के साथ आप सहजता से CodeIgniter के लिए डेवेलपमेंट एनवायरनमेंट बना और प्रबंधित कर सकते हैं।
यह गाइड आपको ServBay के PHP वातावरण और वेबसाइट फीचर का उपयोग कर नया CodeIgniter प्रोजेक्ट बनाने, कॉन्फ़िगर करने, डेटाबेस/कैश सेवाएँ जोड़ने और उसे चलाने का तरीका बताएगा।
आवश्यकताएँ
शुरुआत करने से पहले ये सुनिश्चित करें:
- आपके macOS में ServBay इंस्टॉल और रनिंग हो।
- ServBay में आपकी जरूरत के अनुसार PHP वर्शन (जैसे PHP 8.3) सक्षम हो।
- आप जिन डेटाबेस व कैश सॉफ्टवेयर पैकेज का उपयोग करना चाहते हैं (जैसे MySQL, PostgreSQL, Redis, Memcached) वे ServBay में एक्टिव हों।
CodeIgniter प्रोजेक्ट बनाएँ
ServBay अनुशंसा करता है कि आपका सारा वेबसाइट प्रोजेक्ट /Applications/ServBay/www
फ़ोल्डर में हो ताकि प्रबंधन सरल रहे।
Composer इंस्टॉल करें
ServBay डिफ़ॉल्ट रूप से Composer के साथ आता है, इसलिए अधिकांश मामलों में मैन्युअल इंस्टॉलेशन की ज़रूरत नहीं होती। आप टर्मिनल में
composer
कमांड सीधा चला सकते हैं।वेबसाइट रूट फ़ोल्डर में जाएँ
टर्मिनल खोलें और ServBay द्वारा सुझाए गए वेबसाइट रूट डायरेक्टरी में जाएँ:
bashcd /Applications/ServBay/www
1CodeIgniter प्रोजेक्ट बनाएं
Composer के ज़रिए नया CodeIgniter 4 प्रोजेक्ट बनाएँ। हम प्रोजेक्ट डायरेक्टरी का नाम
servbay-codeigniter-app
रखेंगे:bashcomposer create-project codeigniter4/appstarter servbay-codeigniter-app
1Composer CodeIgniter का बेस एप्लिकेशन और डिपेंडेंसीज डाउनलोड करेगा।
प्रोजेक्ट डायरेक्टरी में जाएँ
अभी बनाए गए CodeIgniter प्रोजेक्ट फोल्डर में जाएँ:
bashcd /Applications/ServBay/www/servbay-codeigniter-app
1
शुरुआती कॉन्फ़िगरेशन
डेटाबेस कनेक्शन सेटअप करें
CodeIgniter की डेटाबेस सेटिंग app/Config/Database.php
फ़ाइल में होती है। किसी भी डेटाबेस के उपयोग से पहले यहां कनेक्शन जानकारी देनी होगी।
सबसे पहले यदि आप डेटाबेस उपयोग करने जा रहे हैं, तो ServBay के डेटाबेस टूल (जैसे Adminer या phpMyAdmin, जो ServBay ऐप में उपलब्ध हैं) द्वारा servbay_codeigniter_app
नाम का डेटाबेस बना लें।
फिर, app/Config/Database.php
खोलें, $default
ऐरे ढूंढें और अपने सर्वर (MySQL या PostgreSQL) के हिसाब से कनेक्शन जानकारी दें। आमतौर पर ServBay का डिफ़ॉल्ट डेटाबेस यूज़रनेम root
और पासवर्ड password
होता है।
MySQL कॉन्फ़िगरेशन का उदाहरण:
php
public $default = [
'DSN' => '',
'hostname' => '127.0.0.1', // ServBay डेटाबेस सामान्यतः 127.0.0.1 पर चलता है
'username' => 'root', // ServBay का डिफ़ॉल्ट यूज़रनेम
'password' => 'password', // ServBay का डिफ़ॉल्ट पासवर्ड
'database' => 'servbay_codeigniter_app', // बनाया गया डेटाबेस नाम
'DBDriver' => 'MySQLi', // डेटाबेस के अनुसार, MySQL के लिए MySQLi या Pdo
'DBPrefix' => '',
'pConnect' => false,
'DBDebug' => (ENVIRONMENT !== 'production'),
'charset' => 'utf8mb4',
'DBCollat' => 'utf8mb4_general_ci',
'swapPre' => '',
'encrypt' => false,
'compress' => false,
'strictOn' => false,
'failover' => [],
'port' => 3306, // MySQL का डिफ़ॉल्ट पोर्ट
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
अगर आप PostgreSQL उपयोग करते हैं तो DBDriver
को 'Postgre'
और port
को 5432
करें, और कैरेक्टर सेटिंग्स आवश्यकतानुसार एडजस्ट करें।
कैश कनेक्शन कॉन्फ़िगर करें (Memcached/Redis)
अगर आप Memcached या Redis कैश का प्रयोग करना चाहते हैं, तो app/Config/Cache.php
फाइल में उपयुक्त सेटिंग करें।
ServBay में Memcached डिफ़ॉल्ट पोर्ट 11211
और Redis 6379
पर चलता है, आमतौर पर पासवर्ड की ज़रूरत नहीं होती।
Memcached के लिए उदाहरण:
php
public $memcached = [
'host' => '127.0.0.1', // आमतौर पर ServBay Memcached 127.0.0.1 पर चलता है
'port' => 11211, // Memcached का डिफ़ॉल्ट पोर्ट
'weight' => 1,
];
1
2
3
4
5
2
3
4
5
Redis के लिए उदाहरण:
php
public string $handler = 'redis'; // डिफ़ॉल्ट कैश हैंडलर को redis सेट करें
public $default = [ // Redis सेटिंग ऑब्जेक्ट
'host' => '127.0.0.1', // आमतौर पर ServBay Redis 127.0.0.1 पर चलता है
'password' => null, // डिफ़ॉल्ट रूप से पासवर्ड नहीं
'port' => 6379, // Redis का डिफ़ॉल्ट पोर्ट
'timeout' => 0,
'database' => 0,
];
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
सुनिश्चित करें कि आपने कैश सॉफ्टवेयर पैकेज के अनुसार उपयुक्त सेक्शन में सेटिंग की है।
वेब सर्वर की सेटिंग (ServBay वेबसाइट सेटअप)
ServBay के वेबसाइट फीचर का इस्तेमाल करें ताकि वेब सर्वर आपके CodeIgniter प्रोजेक्ट की ओर पॉइंट करे।
- ServBay ऐप इंटरफेस खोलिए।
- वेबसाइट्स (Websites) टैब में जाइए।
- बाएं नीचे के
+
बटन पर क्लिक करके नई वेबसाइट जोड़िए। - विवरण भरें:
- नाम (Name): जैसे
My First CodeIgniter Dev Site
- डोमेन (Domain): इच्छित लोकल डोमेन दर्ज करें, जैसे
servbay-codeigniter-test.local
(ServBay.local
को लोकलहोस्ट पर पॉइंट कर देता है) - साइट प्रकार (Site Type):
PHP
चुनें। - PHP वर्शन (PHP Version): जैसे
8.3
चुनें। - डॉक्यूमेंट रूट (Document Root): यह सबसे महत्वपूर्ण है, CodeIgniter का entry file (
index.php
) प्रोजेक्ट केpublic
फोल्डर में है। इसलिए साइट की Root/Applications/ServBay/www/servbay-codeigniter-app/public
होनी चाहिए।
- नाम (Name): जैसे
- Add बटन दबाकर सेटिंग सेव करें।
- जरूरत पड़ने पर बदलाव लागू करें।
विस्तारीकृत चरणों के लिए देखें: पहली वेबसाइट जोड़ें।
उदाहरण कोड जोड़ना
प्रोजेक्ट के सेटअप और डेटाबेस/कैश कनेक्शन की पुष्टि के लिए, CodeIgniter का डिफ़ॉल्ट Home
कंट्रोलर एडिट करें और कुछ उदाहरण मेथड्स जोड़ें।
app/Controllers/Home.php
खोलें और कंटेंट को निम्न कोड से बदलें:
php
<?php
namespace App\Controllers;
use CodeIgniter\Controller;
use CodeIgniter\Database\Exceptions\DatabaseException; // डेटाबेस एक्सेप्शन क्लास शामिल करें
use CodeIgniter\Cache\Exceptions\CacheException; // कैश एक्सेप्शन क्लास शामिल करें
class Home extends Controller
{
/**
* डिफ़ॉल्ट होमपेज मेथड
*/
public function index(): string
{
// सरल स्वागत संदेश लौटाएँ
return '<h1>Hello ServBay and CodeIgniter!</h1><p>Your CodeIgniter project is running on ServBay.</p>';
}
/**
* Memcached उदाहरण मेथड
*/
public function memcached(): string
{
try {
$cache = \Config\Services::cache();
// कैश में डेटा सेव करने का प्रयास करें
$success = $cache->save('servbay_memcached_key', 'Hello Memcached from CodeIgniter!', 60); // 60 सेकंड तक कैश
if (!$success) {
return 'Error: Failed to save data to Memcached. Check Memcached service and configuration.';
}
// कैश से डेटा प्राप्त करने का प्रयास
$value = $cache->get('servbay_memcached_key');
if ($value === null) {
return 'Error: Failed to get data from Memcached. Cache might have expired or service is down.';
}
return 'Memcached Test Success: ' . $value;
} catch (CacheException $e) {
// कैश संबंधित एक्सेप्शन को हैंडल करें
return 'Cache Error: ' . $e->getMessage() . '. Ensure Memcached service is running and configured correctly.';
} catch (\Exception $e) {
// अन्य संभावित त्रुटियों को हैंडल करें
return 'An unexpected error occurred: ' . $e->getMessage();
}
}
/**
* Redis उदाहरण मेथड
*/
public function redis(): string
{
try {
$cache = \Config\Services::cache();
// कैश में डेटा सेव करने का प्रयास करें
$success = $cache->save('servbay_redis_key', 'Hello Redis from CodeIgniter!', 60); // 60 सेकंड तक कैश
if (!$success) {
return 'Error: Failed to save data to Redis. Check Redis service and configuration.';
}
// कैश से डेटा प्राप्त करने का प्रयास
$value = $cache->get('servbay_redis_key');
if ($value === null) {
return 'Error: Failed to get data from Redis. Cache might have expired or service is down.';
}
return 'Redis Test Success: ' . $value;
} catch (CacheException $e) {
// कैश संबंधित एक्सेप्शन को हैंडल करें
return 'Cache Error: ' . $e->getMessage() . '. Ensure Redis service is running and configured correctly.';
} catch (\Exception $e) {
// अन्य संभावित त्रुटियों को हैंडल करें
return 'An unexpected error occurred: ' . $e->getMessage();
}
}
/**
* यूज़र डाटा को डेटाबेस में लिखें (MySQL/PostgreSQL)
*/
public function addUser(): string
{
try {
$db = \Config\Database::connect();
// जाँचें कि 'users' टेबल मौजूद है या नहीं (रक्षा के लिए)
if (!$db->tableExists('users')) {
return 'Error: "users" table does not exist. Please run database migrations first.';
}
// डेटा इनसर्ट करें
$data = [
'name' => 'ServBay Demo User',
'email' => 'user_' . time() . '@servbay.demo', // अद्वितीय email बनाने के लिए time() का उपयोग
];
$db->table('users')->insert($data);
// सफल इनसर्शन की जाँच (वैकल्पिक, insert आमतौर पर true लौटाता है)
// if ($db->affectedRows() > 0) {
return 'User added successfully: ' . $data['email'];
// } else {
// return 'Error: Failed to add user.';
// }
} catch (DatabaseException $e) {
// डेटाबेस संबंधित एक्सेप्शन को हैंडल करें
return 'Database Error: ' . $e->getMessage() . '. Check database connection and table structure.';
} catch (\Exception $e) {
// अन्य संभावित त्रुटियों को हैंडल करें
return 'An unexpected error occurred: ' . $e->getMessage();
}
}
/**
* डेटाबेस से यूज़र डाटा पढ़ें (MySQL/PostgreSQL)
*/
public function listUsers(): string
{
try {
$db = \Config\Database::connect();
// 'users' टेबल की उपस्थिति की जाँच
if (!$db->tableExists('users')) {
return 'Error: "users" table does not exist. Please run database migrations first.';
}
// सभी यूज़र डेटा फेच करें
$users = $db->table('users')->get()->getResult();
if (empty($users)) {
return 'No users found in the database.';
}
// यूज़र लिस्ट JSON फॉर्मेट में लौटाएँ
return json_encode($users);
} catch (DatabaseException $e) {
// डेटाबेस संबंधित एक्सेप्शन को हैंडल करें
return 'Database Error: ' . $e->getMessage() . '. Check database connection and table structure.';
} catch (\Exception $e) {
// अन्य संभावित त्रुटियों को हैंडल करें
return 'An unexpected error occurred: ' . $e->getMessage();
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
यह अपडेटेड कंट्रोलर आउटपुट और बेसिक एरर हैंडलिंग के साथ आता है ताकि समस्या पहचानने में आसानी हो।
रूटिंग कॉन्फ़िगर करें
Home
कंट्रोलर में जो उदाहरण मेथड्स जोड़े हैं, उन्हें URL से एक्सेस करने के लिए CodeIgniter की रूट्स फ़ाइल में उपयुक्त रूल जोड़ें।
app/Config/Routes.php
खोलें। $routes
डिफ़िनिशन सेक्शन में निम्न रूल्स जोड़ें:
php
// ... अन्य रूटिंग नियम ...
// Memcached उदाहरण रूट
$routes->get('/memcached', 'Home::memcached');
// Redis उदाहरण रूट
$routes->get('/redis', 'Home::redis');
// डेटाबेस उदाहरण रूट्स
$routes->get('/add-user', 'Home::addUser');
$routes->get('/list-users', 'Home::listUsers');
// ... अन्य रूटिंग नियम ...
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
सुनिश्चित करें कि आप इन्हें मौजूदा $routes
के भीतर जोड़ रहे हैं, अन्य कंटेंट को ओवरराइट न करें।
वेबसाइट देखें
अब आपका CodeIgniter प्रोजेक्ट ServBay पर चलने को तैयार है। अपने ब्राउज़र में दिए गए डोमेन से साइट खोलें:
होमपेज का विज़िट करें:
https://servbay-codeigniter-test.local
आपको पेज परHello ServBay and CodeIgniter!
नजर आना चाहिए, जो सफल सर्वर सेटअप को दर्शाता है।Memcached उदाहरण:
https://servbay-codeigniter-test.local/memcached
अगर Memcached सेटअप बढ़िया है, तो आपको आउटपुटMemcached Test Success: Hello Memcached from CodeIgniter!
जैसा मिलेगा।Redis उदाहरण:
https://servbay-codeigniter-test.local/redis
यदि Redis सही चली तो आउटपुटRedis Test Success: Hello Redis from CodeIgniter!
दिखेगा।
डेटाबेस ऑपरेशन उदाहरण (MySQL/PostgreSQL)
डेटाबेस उदाहरण इस्तेमाल करने से पहले आपको CodeIgniter की माइग्रेशन कमांड चला कर users
टेबल बनानी होगी।
डेटाबेस संरचना बनाएँ (माइग्रेशन चलाएँ)
टर्मिनल खोलकर CodeIgniter प्रोजेक्ट फोल्डर में जाएँ:
bashcd /Applications/ServBay/www/servbay-codeigniter-app
1माइग्रेशन फाइल बनाएँ: CLI टूल से माइग्रेशन फाइल जेनरेट करें:
bashphp spark make:migration create_users_table
1इससे
app/Database/Migrations
फोल्डर में एक नया PHP फाइल बनेगा।माइग्रेशन फाइल एडिट करें: नयी फाइल में
up()
मेथड खोलकर,users
टेबल के कॉलम्स और इंडेसेज़ डिफाइन करें। नोट: MySQL और PostgreSQL में टाइमस्टैम्प डिफॉल्ट वैल्यू की SQL वाक्य रचना थोड़ी अलग है (CURRENT_TIMESTAMP
बनामNOW()
), जिसे CodeIgniter केRawSql
से संभाला गया है। उदाहरण:php<?php namespace App\Database\Migrations; use CodeIgniter\Database\Migration; use CodeIgniter\Database\RawSql; // RawSql क्लास को शामिल करें class CreateUsersTable extends Migration { public function up() { $this->forge->addField([ 'id' => [ 'type' => 'INT', 'constraint' => 5, 'unsigned' => true, 'auto_increment' => true, ], 'name' => [ 'type' => 'VARCHAR', 'constraint' => '100', ], 'email' => [ 'type' => 'VARCHAR', 'constraint' => '100', 'unique' => true, // ईमेल कॉलम अद्वितीय सेट करें ], 'created_at' => [ 'type' => 'TIMESTAMP', // डेटाबेस टाइप के अनुसार डिफ़ॉल्ट वैल्यू चुनें // MySQL: 'default' => new RawSql('CURRENT_TIMESTAMP'), // PostgreSQL: 'default' => new RawSql('NOW()'), 'default' => new RawSql($this->db->getPlatform() === 'MySQLi' ? 'CURRENT_TIMESTAMP' : 'NOW()'), // डायनामिक चयन ], 'updated_at' => [ 'type' => 'TIMESTAMP', // MySQL: 'default' => new RawSql('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), // PostgreSQL: 'default' => new RawSql('NOW()'), 'default' => new RawSql($this->db->getPlatform() === 'MySQLi' ? 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP' : 'NOW()'), // डायनामिक चयन ], ]); $this->forge->addKey('id', true); // id को प्राइमरी की बनाएं $this->forge->createTable('users'); // users टेबल बनाएं } public function down() { // माइग्रेशन रोलबैक के लिए, users टेबल हटाएं $this->forge->dropTable('users'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51नोट: ऊपर दिए गए उदाहरण में डेटाबेस प्लेटफार्म के अनुसार डिफ़ॉल्ट वैल्यू डाइनामिकली चुनी जाती है। असली बड़े प्रोजेक्ट्स में आप और अधिक लोचदार माइग्रेशन स्ट्रेटेजी या अलग-अलग डेटाबेस के लिए अलग फाइल रख सकते हैं।
माइग्रेशन चलाएँ: टर्मिनल में चलाएँ:
bashphp spark migrate
1सफल रन होने पर टर्मिनल में संदेश मिलेगा और Adminer जैसे डेटाबेस टूल से आप
servbay_codeigniter_app
में users टेबल देख सकेंगे।
डेटाबेस उदाहरण देखें
सुनिश्चित करें कि आपने app/Config/Database.php
में सही डेटाबेस कनेक्शन की सेटिंग की है और माइग्रेशन द्वारा users टेबल बना लिया है।
यूज़र जोड़ें:
https://servbay-codeigniter-test.local/add-user
खोलें
हर बार इस लिंक को ओपन करने पर users टेबल में एक नया यूज़र जुड़ जाएगा। आउटपुट ऐसा होगा:User added successfully: [email protected]
यूज़र्स की लिस्ट देखें:
https://servbay-codeigniter-test.local/list-users
यह URL users टेबल के सभी रिकॉर्ड्स JSON फॉर्मेट में दिखाएगा।
सारांश
इस गाइड के माध्यम से आपने macOS के ServBay वातावरण में एक नया CodeIgniter प्रोजेक्ट बनाना, कॉन्फ़िगर करना, चलाना सीख लिया है। आपने सीखा कि Composer से प्रोजेक्ट कैसे शुरू करें, ServBay के वेबसाइट फीचर से प्रोजेक्ट डायरेक्टरी को वेब सर्वर से जोड़ें, CodeIgniter में डेटाबेस और कैश कनेक्शन सेट करें और कैसे छोटे उदाहरण कोड द्वारा इन सेवाओं को जांचें। ServBay आपके लोकल डेवलपमेंट को बेहद आसान और व्यवस्थित बना देता है, जिससे आप एप्लिकेशन विकास पर ही ध्यान केंद्रित कर सकते हैं।