2012-06-06 14 views
12

मेरा इरादा तुलना करना या चर्चा करना नहीं है कि कौन सा ढांचा बेहतर है। मैं केकेपीएचपी और रेल दोनों की शक्ति जानता हूं। मुझे यकीन है कि दोनों में समान चीजें करने का एक तरीका है।रेल 3.2 से केक PHP 2.0 तक। कुछ रेल सामान्य कार्यों को कैसे करें?

तो, यह स्थिति है: रेल ढांचे में, मुझे कुछ ऐसा करने के लिए उपयोग किया जाता है जिसे मैं केकपीएचपी पर करना चाहता हूं (उनमें से कुछ मुझे दस्तावेज़ीकरण पर नहीं मिला है)।

वे हैं:

पैकेज प्रबंधन

रेल में, मैं "Gemfile" फ़ाइल है, जहां मैं एक "मणि" आवेदन में इस्तेमाल के संस्करण लिखने की है। अगर मैं अपग्रेड करना या डाउनग्रेड करना चाहता हूं, तो मैं संस्करण बदलता हूं और "बंडल अपडेट" कमांड चलाता हूं। आप प्लगइन कैसे अपडेट करते हैं? क्या आप प्रत्येक संस्करण को नए संस्करणों में चेकआउट करने के लिए जीआईटी जैसे टूल का उपयोग करते हैं?

माइग्रेशन

जब मैं डेटाबेस को बदलने की जरूरत है, मैं सांत्वना आदेश के माध्यम से एक खाली "प्रवास" फ़ाइल बनाने के "रेल प्रवास उत्पन्न"। फिर, जेनरेट की गई फ़ाइल में, मैं "rename_column: उपयोगकर्ता, पता, स्थान" जैसे परिवर्तन जोड़ता हूं। उसके बाद, मैं "रेक डीबी: माइग्रेट" चलाता हूं और डेटाबेस माइग्रेट हो जाता है। केकपीएचपी पर ऐसा कैसे करें?

स्वचालित तैनाती

रेल में तैनाती "Capistrano" गहरे लाल रंग का रत्न का उपयोग कर स्वचालित किया जा सकता है। असल में, मैं कमांड लाइन में "टोपी उत्पादन तैनाती" चलाता हूं। फिर, "deploy.rb" फ़ाइल के निर्देशों के आधार पर, यह सर्वर में लॉग इन करता है, गिट रिपोजिटरी से कोड के नवीनतम संस्करण को क्लोन करता है, और वर्तमान रिलीज बैकअप करता है, इसलिए मैं रोलबैक कर सकता हूं। यह "साझा" फ़ोल्डर (जैसे उपयोगकर्ता अपलोड) के लिए सिम्लिंक भी बना सकता है, संपत्तियों को पुन: संकलित कर सकता है, लंबित माइग्रेशन चला सकता है, नई निर्भरताओं को स्थापित कर सकता है, कुछ सर्वर प्रक्रियाओं को पुनरारंभ कर सकता है, एप्लिकेशन को पुनरारंभ कर सकता है, और अन्य कमांड लाइन कार्यों को निष्पादित कर सकता है। क्या केकपीएचपी पर कुछ समान है?

आस्तियों संपीड़न

रेल में, जब मैं उत्पादन मोड में कर रहा हूँ, सीएसएस और जे एस संपत्ति स्वचालित रूप से एकल फ़ाइलों में संकलित किया गया है, और प्रत्येक तैनाती के बाद पुनर्जीवित। यह रेल 3.1+ में एक मूल विशेषता है। क्या यह केकपीएचपी पर संभव है?

श्रमिक और पृष्ठभूमि नौकरियां

रेल कार्यों उदाहरण के लिए, उपयोगकर्ता साइन अप के बाद एक ई-मेल भेजने की तरह, "श्रमिकों" द्वारा पृष्ठभूमि में निष्पादित किया जाना है enqueue करने के लिए एक मणि "delayed_job" कहा जाता है का उपयोग कर सकते हैं। आप उसे कैसे करते हैं? नियंत्रकों

मैं एक व्यवस्थापक इंटरफ़ेस, या एक वेब सेवा ("API" नाम स्थान का उपयोग कर उदाहरण के लिए,), या एक "मोबाइल" नाम स्थान बनाना चाहते हैं के लिए

नेमस्पेस, मैं सिर्फ संबंधित बनाने "नियंत्रक" फ़ोल्डर पर फ़ोल्डर्स। फिर, मैंने वहां नियंत्रकों को रखा और उन्हें एक्सेस करने के लिए मार्ग बनाये। केक पर ऐसा करने का सबसे अच्छा तरीका क्या है?

दृश्य

से पहुंच मॉडल तरीकों ऐसा लगता है जब मैं डेटाबेस से डेटा हड़पने कि CakePHP एक साहचर्य सरणी लौटने के लिए, और नहीं सच "वस्तुओं"। तो, मैं मॉडल विधियों तक नहीं पहुंच सकता। मान लीजिए कि मेरा UserModel क्लास "आयु" नामक एक विधि प्रदान करता है जो उपयोगकर्ता के जन्मदिन के आधार पर उपयोगकर्ता की वर्तमान आयु की गणना करता है। रेल में, मैं इसे देखने पर कर सकता था: <% = @ user.age%>। मुझे केक पर ऐसा करने के लिए एक दृश्य सहायक बनाने की ज़रूरत है? Calc_user_age ($ उपयोगकर्ता) की तरह; ?> (या ऐसा कुछ)? एक और स्थिति: मान लीजिए कि मैं किसी उपयोगकर्ता से अंतिम टिप्पणी प्राप्त करना चाहता हूं, और टिप्पणी के भीतर, पोस्ट शीर्षक का उपयोग कर संबंधित पोस्ट के लिए एक लिंक डालें। रेल में मैं पोस्ट शीर्षक प्राप्त करने के लिए @ user.comments.last.post.title की तरह कुछ करूंगा। मैं केक में ऐसा कैसे कर सकता हूं, उस "रिकर्सिव = 3" फीचर का उपयोग किए बिना जो बहुत सारे अनावश्यक डेटा प्राप्त करता है?

श्रृंखलन मॉडल scopes

की मैं एक मॉडल पोस्ट कहा जाता है लगता हैं। रेल में, मैं मॉडल पर स्कोप बना सकता हूं और जिस तरह से चाहता हूं उसे मिला सकता हूं। यदि मैं "सबसे अधिक एक्सेस किए गए श्रेणी प्रोग्रामिंग से 5 अंतिम प्रकाशित पोस्ट" प्राप्त करना चाहता हूं, उदाहरण के लिए, मैं उन्हें इस तरह से कॉल करूंगा: "Post.published.from_category (" प्रोग्रामिंग ")। Most_accessed.limit (5) "। यदि मैं केवल हाल ही में आदेशित ड्राफ्ट पोस्ट चाहता हूं, पेजिनेशन के साथ एकीकृत, मैं "Post.drafts.recent.page (2)" कहूंगा। केकपीएचपी पर स्कॉप्स बनाने और चेन करने का सबसे अच्छा तरीका क्या है? गतिशील रूप से परिस्थितियों की एक सरणी बनाएं और इसे "ढूंढें" के लिए पैरामीटर के रूप में भेजें?

टेस्ट

CakePHP समुदाय द्वारा अपनाया परीक्षण उपकरण क्या हैं? मुझे मॉडलों और इसकी विधियों का परीक्षण करने, नियंत्रकों और उसके प्रतिक्रियाओं और चरों का परीक्षण करने की आवश्यकता है, और दृश्य सामग्री (जावास्क्रिप्ट इंटरैक्शन) भी परीक्षण करें, फिक्स्चर बनाएं, आदि। मुझे यह भी पता चलेगा कि ऑटोटास्ट जैसे कुछ बनाने का कोई तरीका है या नहीं, जो फाइल सहेजने के बाद परीक्षण चलाता है।

अच्छा, मूल रूप से ये अंक हैं। लंबी पोस्ट के लिए खेद है, और मेरे त्रुटि-प्रवण और अनावश्यक अंग्रेजी के लिए (मैं मूल निवासी नहीं हूं)। इसके अलावा, मैं एक विशेषज्ञ नहीं हूँ। तो, मैं यहां कुछ गलत सामान लिख सकता हूं।

आशा है कि हम एक अच्छी बातचीत कर सकते हैं। धन्यवाद!

उत्तर