2009-06-29 8 views
6

मैं एक आरओआर डेवलपर हूं, लेकिन मैं वर्तमान में केकपीएचपी के साथ एक परियोजना के लिए काम कर रहा हूं जहां मैं सर्वर को ट्विक नहीं कर सकता। मेरे रेल उत्पादन सर्वर में, यात्री स्वचालित रूप से "उत्पादन" वातावरण का उपयोग करने के लिए सेटअप किया जाता है, जो स्थानीय ऐप सेटअप को ओवरराइड करता है। मैं एक ही काम करने के लिए अपने केकफ़्प ऐप को सेट करना चाहता हूं। आप आमतौर पर केकपीएचपी के साथ इसे कैसे पूरा करते हैं? क्या आप एक डोमेन पार्सर सेट अप करते हैं, या आप बस core.php और डेटाबेस.php को संस्करण नियंत्रण से बाहर रखते हैं? अग्रिम धन्यवाद, डेविडमैं अपने विकास/उत्पादन वातावरण का पता लगाने के लिए केकेपीएचपी को कैसे कॉन्फ़िगर कर सकता हूं या क्या मैं कॉन्फ़िगरेशन फ़ाइलों को संस्करण नियंत्रण से बाहर रखता हूं?

उत्तर

11

अगर मैं सवाल का सही ढंग से समझ, इस बात की जरूरत हो सकती है:

Automatically choose database connections in CakePHP

संक्षेप में, DATABASE_CONFIG निर्माता ओवरराइड:

class DATABASE_CONFIG 
{ 
    //initalize variable as null 
    var $default=null; 

    //set up connection details to use in Live production server 
    var $prod = 
     array(
      // ... 
     ); 

    // and details to use on your local machine for testing and development 
    var $dev = 
     array(
      // ... 
     ); 

    function __construct() 
    {  
     if(isset($_SERVER['SERVER_NAME'])){ 
      switch($_SERVER['SERVER_NAME']){ 
       case 'digbiz.localhost': 
        $this->default = $this->dev; 
        break; 
       case 'digbiz.example.com': 
        $this->default = $this->prod; 
        break; 
      } 
     } 
     else // we are likely baking, use our local db 
     { 
      $this->default = $this->dev; 
     } 
    } 
} 
+0

बिल्कुल सही, वास्तव में मैं क्या – nutsmuggler

+0

खुशी है कि इस लेख के लिए देख रहा था आप मदद की :) प्रतिक्रिया – Eddie

+1

लिंक अब काम नहीं करता छोड़ दें। भविष्य में, ऐसा होने पर बस लिंक से महत्वपूर्ण विवरण उद्धृत करना एक अच्छा विचार है। – BMitch

1

तुम बस एक अतिरिक्त फ़ाइल है कि एकल Configure::write('debug', 0) * निर्देश रखती बना सकते हैं, आयात कि core.php फ़ाइल में है और यह संस्करण नियंत्रण से बाहर रखने के लिए। दोनों ओर से लाभदायक।

* या आप

1

बदलने के लिए डेटाबेस के लिए की जरूरत है और जो कुछ भी है, तो आप स्थानीय और उत्पादन कनेक्शन सेटिंग्स सेट कर सकते हैं और फिर फ़ाइल एप्लिकेशन/app_model.php बना सकते हैं और लाइन में शामिल हैं:

class AppModel extends Model 
{ 
    var $useDbConfig = 'production'; 
} 

फिर आप फ़ाइल ऐप/app_controller.php बना सकते हैं और डोमेन को पार्स कर सकते हैं और कॉन्फ़िगर :: लिखने का उपयोग करके इसे dbconfig उपयोग करने के लिए और किसी अन्य core.php सेटिंग्स को बता सकते हैं।

7

यह बेहतर हो सकता है prod परिभाषित करने के लिए/dev bootstrap.php में। इस तरह आप ऐप में निरंतर पुन: उपयोग कर सकते हैं।

bootstrap.php:

define('IS_PROD',(isset($_SERVER['SERVER_NAME']) && $_SERVER['SERVER_NAME'] == 'cubismedia.com') ? true : false); 

database.php:

function __construct() { 
     if (IS_PROD) { 
      $this->default = $this->prod; 
     } else { 
      $this->default = $this->dev; 
     } 
    } 

//development 
public $dev = array(
    //db settings 
); 

//production 
public $prod = array(
    //db settings 
); 
+1

यह मूल रूप से मैं करता हूं, लेकिन मैं इसे core.php में एक स्तर पर करता हूं। मैंने "APPLICATION_ENV" नामक निरंतर सेट किया है, इसलिए मैं इसे कोड में कहीं और संदर्भित कर सकता हूं और एक डेटाबेस विशिष्ट कॉन्फ़िगरेशन फ़ाइल भी लोड कर सकता हूं जहां मैं डेटाबेस होस्ट, एपीआई कुंजी आदि जैसी चीजों के लिए स्थिरांक परिभाषित करता हूं (कॉन्फ़िगरेशन मान भी काम करेंगे)। –