CakePHP - प्रोजेक्ट कॉन्फ़िगरेशन
इस अध्याय में, हम समझेंगे Environment Variables, General Configuration, Database Configuration तथा Email Configuration केकपीएचपी में।
ConfigurationCakePHP डिफ़ॉल्ट रूप से एक कॉन्फ़िगरेशन फ़ाइल के साथ आता है, और हम इसे अपनी आवश्यकताओं के अनुसार संशोधित कर सकते हैं। एक समर्पित फ़ोल्डर है“config”इस काम के लिए। CakePHP विभिन्न विन्यास विकल्पों के साथ आता है।
चलिए CakePHP में पर्यावरण चर को समझने के द्वारा शुरू करते हैं।
पर्यावरण चर
पर्यावरण चर विभिन्न वातावरणों पर आपके एप्लिकेशन के काम को आसान बनाते हैं। उदाहरण के लिए, देव सर्वर, परीक्षण सर्वर, मंचन सर्वर और उत्पादन सर्वर वातावरण पर। इन सभी वातावरणों के लिए, आप इसका उपयोग कर सकते हैंenv() function आपके द्वारा आवश्यक पर्यावरण के लिए कॉन्फ़िगरेशन को पढ़ने और अपने एप्लिकेशन का निर्माण करने के लिए।
आपके कॉन्फ़िगरेशन फ़ोल्डर में, आप config / .env.example भर में आएंगे। इस फ़ाइल में सभी चर हैं जो आपके वातावरण के आधार पर बदले जाएंगे। इसके साथ शुरू करने के लिए, आप विन्यास फ़ोल्डर में फाइल बना सकते हैं। config / .env और उन चरों को परिभाषित करके उनका उपयोग कर सकते हैं। यदि आपको किसी अतिरिक्त चर की आवश्यकता होती है, तो यह उस फ़ाइल में जा सकता है।
आप अपने पर्यावरण चर को एन्वा () फ़ंक्शन के रूप में नीचे दिखाए अनुसार पढ़ सकते हैं -
उदाहरण
$debug = env('APP_DEBUG', false);
पहला एक पर्यावरण चर का नाम है जिसे आप चाहते हैं और दूसरा मान डिफ़ॉल्ट मान है। डिफ़ॉल्ट मान का उपयोग किया जाता है, अगर पर्यावरण चर के लिए कोई मूल्य नहीं मिला है।
सामान्य विन्यास
निम्न तालिका विभिन्न चर की भूमिका का वर्णन करती है और वे आपके CakePHP अनुप्रयोग को कैसे प्रभावित करती हैं।
अनु क्रमांक | परिवर्तनीय नाम और विवरण |
---|---|
1 | debug केकपीएचपी डिबगिंग आउटपुट में परिवर्तन। false= उत्पादन मोड। कोई त्रुटि संदेश, त्रुटियां, या चेतावनी नहीं दिखाई गई हैं। true = त्रुटियों और चेतावनियों को दिखाया। |
2 | App.namespace के तहत एप्लिकेशन कक्षाओं को खोजने के लिए नामस्थान। |
3 | App.baseUrl यदि आप Apache की mod_rewrite CakePHP के साथ उपयोग करने की योजना नहीं बनाते हैं, तो इस परिभाषा को अन-कमेंट करें। अपनी .htaccess फ़ाइलों को भी निकालना न भूलें। |
4 | App.base आधार निर्देशिका ऐप में रहता है। यदि गलत है, तो यह ऑटो का पता लगाया जाएगा। |
5 | App.encoding परिभाषित करें कि आपके एप्लिकेशन का उपयोग करने वाले एन्कोडिंग क्या हैं। इस एन्कोडिंग का उपयोग लेआउट में चारसेट बनाने के लिए किया जाता है, और संस्थाओं को एनकोड किया जाता है। यह आपके डेटाबेस के लिए निर्दिष्ट एन्कोडिंग मूल्यों से मेल खाना चाहिए। |
6 | App.webroot Webroot निर्देशिका। |
7 | App.wwwRoot Webroot के लिए फ़ाइल पथ। |
8 | App.fullBaseUrl आपके आवेदन की जड़ में पूरी तरह से योग्य डोमेन नाम (प्रोटोकॉल सहित)। |
9 | App.imageBaseUrl वेबरूट के तहत सार्वजनिक छवियों निर्देशिका के लिए वेब पथ। |
10 | App.cssBaseUrl Webroot के तहत सार्वजनिक css निर्देशिका में वेब पथ। |
1 1 | App.jsBaseUrl Webroot के तहत जनता के लिए js डायरेक्टरी का वेब पथ। |
12 | App.paths गैर-वर्ग आधारित संसाधनों के लिए पथ कॉन्फ़िगर करें। का समर्थन करता हैplugins, templates, locales, subkeys, जो क्रमशः प्लगइन्स, व्यू टेम्प्लेट और लोकेल फ़ाइलों के लिए पथ की परिभाषा की अनुमति देते हैं। |
13 | Security.salt हैशिंग में प्रयुक्त एक यादृच्छिक स्ट्रिंग। सममित एन्क्रिप्शन करते समय इस मान का उपयोग HMAC नमक के रूप में भी किया जाता है। |
14 | Asset.timestamp एक टाइमस्टैम्प को लागू करता है, जो उचित सहायकों का उपयोग करते समय संपत्ति फाइलों के URL (CSS, जावास्क्रिप्ट, छवि) के अंत में विशेष रूप से संशोधित समय होता है। मान्य मूल्य हैं -
|
डेटाबेस कॉन्फ़िगरेशन
डेटाबेस में कॉन्फ़िगर किया जा सकता है config/app.php and config/app_local.phpफ़ाइल। इस फ़ाइल में प्रदान किए गए मापदंडों के साथ एक डिफ़ॉल्ट कनेक्शन है, जिसे हमारी पसंद के अनुसार संशोधित किया जा सकता है।
नीचे दिए गए स्निपेट डिफ़ॉल्ट मापदंडों और मूल्यों को दर्शाते हैं, जिन्हें आवश्यकता के अनुसार संशोधित किया जाना चाहिए।
Config / app_local.php
*/
'Datasources' => [
'default' => [
'host' => 'localhost',
'username' => 'my_app',
'password' => 'secret',
'database' => 'my_app',
'url' => env('DATABASE_URL', null),
],
/*
* The test connection is used during the test suite.
*/
'test' => [
'host' => 'localhost',
//'port' => 'non_standard_port_number',
'username' => 'my_app',
'password' => 'secret',
'database' => 'test_myapp',
//'schema' => 'myapp',
],
],
आइए हम प्रत्येक पैरामीटर को विस्तार से समझते हैं config/app_local.php।
मेज़बान | डेटाबेस सर्वर के होस्टनाम (या आईपी पते)। |
---|---|
उपयोगकर्ता नाम | डेटाबेस उपयोगकर्ता नाम |
कुंजिका | डेटाबेस पासवर्ड। |
डेटाबेस | डेटाबेस का नाम। |
बंदरगाह | टीसीपी पोर्ट या यूनिक्स सॉकेट सर्वर से कनेक्ट करने के लिए उपयोग किया जाता है। |
config / app.php
'Datasources' => [
'default' => [
'className' => Connection::class,
'driver' => Mysql::class,
'persistent' => false,
'timezone' => 'UTC',
//'encoding' => 'utf8mb4',
'flags' => [],
'cacheMetadata' => true,
'log' => false,
'quoteIdentifiers' => false,
//'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'],
],
]
आइए हम प्रत्येक पैरामीटर को विस्तार से समझते हैं config/app.php।
लॉगअनु क्रमांक | कुंजी और विवरण |
---|---|
1 | className वर्ग का पूरी तरह से नामांकित वर्ग नाम जो एक डेटाबेस सर्वर से कनेक्शन का प्रतिनिधित्व करता है। यह वर्ग डेटाबेस ड्राइवर को लोड करने, SQL लेनदेन तंत्र प्रदान करने और अन्य बातों के बीच SQL कथन तैयार करने के लिए जिम्मेदार है। |
2 | driver चालक का वर्ग नाम डेटाबेस इंजन के लिए सभी विशिष्टताओं को लागू करने के लिए उपयोग किया जाता है। यह प्लगइन सिंटैक्स, पूरी तरह से नामांकित नाम, या एक निर्मित ड्राइवर उदाहरण का उपयोग करके या तो एक छोटा वर्गनाम हो सकता है। लघु वर्गनाम के उदाहरण हैं मैसकल, स्क्लाइट, पोस्टग्रेज और स्क्लसेवर। |
3 | persistent डेटाबेस के लिए एक स्थायी कनेक्शन का उपयोग करें या नहीं। |
4 | encoding SQL कथन को 'utf8' आदि जैसे सर्वर पर भेजते समय उपयोग किए गए वर्ण को इंगित करता है। |
5 | timezone सर्वर timezone सेट करने के लिए। |
6 | init उन क्वेरीज़ की एक सूची, जिन्हें कनेक्शन बनाते समय डेटाबेस सर्वर को भेजा जाना चाहिए। |
7 | log क्वेरी लॉगिंग को सक्षम करने के लिए सही पर सेट करें। जब सक्षम क्वेरीज़ को क्वेरी स्तर के साथ डीबग स्तर पर लॉग किया जाएगा। |
8 | quoteIdentifiers सही पर सेट करें, यदि आप अपनी तालिका या स्तंभ नामों में आरक्षित शब्दों या विशेष वर्णों का उपयोग कर रहे हैं। इस सेटिंग को सक्षम करने से क्वेरी बिल्डर के उपयोग से निर्मित क्वेरीज़ का पता चलेगा, जिसमें SQL बनाते समय पहचानकर्ता को उद्धृत किया जाता है। यह प्रदर्शन को कम करता है। |
9 | flags पीडीओ स्थिरांक का एक सहयोगी सरणी जिसे अंतर्निहित पीडीओ उदाहरण के लिए पारित किया जाना चाहिए। |
10 | cacheMetadata मेटा डेटा को संग्रहीत करने के लिए या तो बूलियन सच, या कैश कॉन्फ़िगरेशन युक्त स्ट्रिंग में मेटाडेटा कैशिंग अक्षम होने की सलाह नहीं दी जाती है और इसके परिणामस्वरूप बहुत खराब प्रदर्शन हो सकता है। |
ईमेल कॉन्फ़िगरेशन
ईमेल को फ़ाइल में कॉन्फ़िगर किया जा सकता है config/app.php। यह विन्यास / app.php में ईमेल विन्यास को परिभाषित करने के लिए आवश्यक नहीं है। इसके बिना ईमेल का उपयोग किया जा सकता है। सभी कॉन्फ़िगरेशन को अलग-अलग सेट करने के लिए संबंधित विधियों का उपयोग करें या कॉन्फ़िगरेशन की एक सरणी लोड करें। ईमेल डिफॉल्ट के लिए कॉन्फ़िगरेशन का उपयोग करके बनाया गया हैconfig() तथा configTransport()।
ईमेल कॉन्फ़िगरेशन परिवहन
डिलीवरी प्रोफाइल से अलग ट्रांसपोर्ट को परिभाषित करके, आप आसानी से कई प्रोफाइल में ट्रांसपोर्ट कॉन्फ़िगरेशन को फिर से उपयोग कर सकते हैं। आप उत्पादन, विकास और परीक्षण के लिए कई कॉन्फ़िगरेशन निर्दिष्ट कर सकते हैं। प्रत्येक परिवहन को एक क्लासनाम की आवश्यकता होती है। मान्य विकल्प इस प्रकार हैं -
Mail - PHP मेल फ़ंक्शन का उपयोग करके भेजें
Smtp - SMTP का उपयोग करके भेजें
Debug - ईमेल न भेजें, बस परिणाम वापस करें
आप उपयुक्त फ़ाइल जोड़कर कस्टम ट्रांसपोर्ट (या मौजूदा ट्रांसपोर्ट को ओवरराइड कर सकते हैं) जोड़ सकते हैं src/Mailer/Transport। ट्रांसपोर्टेशन के नाम होने चाहिएYourTransport.php, कहाँ पे 'Your' परिवहन का नाम है।
ईमेल विन्यास परिवहन का उदाहरण निम्नलिखित है।
'EmailTransport' => [
'default' => [
'className' => 'Mail',
// The following keys are used in SMTP transports
'host' => 'localhost',
'port' => 25,
'timeout' => 30,
'username' => 'user',
'password' => 'secret',
'client' => null,
'tls' => null,
'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null),
],
],
ईमेल डिलीवरी प्रोफाइल
वितरण प्रोफाइल आपको अपने आवेदन से ईमेल संदेशों के बारे में विभिन्न गुणों को पूर्वनिर्धारित करने की अनुमति देता है, और सेटिंग्स को एक नाम देता है। यह आपके आवेदन भर में दोहराव बचाता है और रखरखाव और विकास को आसान बनाता है। प्रत्येक प्रोफ़ाइल कई कुंजियों को स्वीकार करती है।
निम्नलिखित ईमेल डिलीवरी प्रोफाइल का एक उदाहरण है।
'Email' => [
'default' => [
'transport' => 'default',
'from' => 'you@localhost',
],
],