2010-07-30 10 views
8

ठीक है मुझे लगता है कि मैं अपने स्वयं धक्का कर रहा हूँ अब तक यहाँ, मैं अपने ही MVC में एक परियोजना createing कर रहा हूँ भी मैं नहीं जानता कि क्या MVS ही है,PHP पर एमवीसी का उपयोग कब करें?

<?php  

class init 
    { 
     function __construct() 
     { 
      $this->enviroment(); 
      $this->start(); 
     } 

     function enviroment() 
     { 
      /* Required Classes */ 
      require_once(ROOTPATH . BOOTSTRAP . REDENGINE . '/class.debug.php'); 
      require_once(ROOTPATH . BOOTSTRAP . REDENGINE . '/class.theme.php'); 
      require_once(ROOTPATH . BOOTSTRAP . REDENGINE . '/class.url.php'); 
      require_once(ROOTPATH . BOOTSTRAP . REDENGINE . '/language/class.lang.php'); 
      require_once(ROOTPATH . BOOTSTRAP . REDENGINE . '/class.sessions.php'); 
     } 
     function start() 
     { 
      /* Start Classes */ 
      $uSys = new Urlsystem; 
      $fragments = $uSys->getFragments(); 
      $tSys = new ThemeSystem; 
      $lSys = new LanguageSystem; 
      $sSys = new Sessions; 

      /* defineing APPVIEWS & APPCONTROLLER */   
      define('APPVIEWS', '/appviews'); 
      define('APPCONTROLLER', '/appcontroller'); 

      if (empty($fragments)) 
      { 
       require_once(ROOTPATH . APPCONTROLLER . '/app.home.php'); /* default app controller page */ 
       require_once(ROOTPATH . APPVIEWS . '/view.home.php'); /* default app views page */ 
      } 

      if (!empty($fragments)) 
      { 
       // Start ENGINE 
       if (!file_exists(ROOTPATH . APPCONTROLLER . '/app' . $fragments . '.php') && 
        !file_exists(ROOTPATH . APPVIEWS . '/view' . $fragments. '.php') 
       ) { 

          if (file_exists(ROOTPATH . APPCONTROLLER . '/app.404.php') && 
           file_exists(ROOTPATH . APPVIEWS . '/view.404.php') 
          ) { 
           require ROOTPATH . APPCONTROLLER . '/app.404.php'; 
           require ROOTPATH . APPVIEWS . '/view.404.php'; 
          } 
          else { 
           echo "NO 404 APP || VIEW"; 
          } 
       }   
       if (file_exists(ROOTPATH . APPCONTROLLER . '/app' . $fragments . '.php')) 
       { 
        require ROOTPATH . APPCONTROLLER . '/app' . $fragments . '.php'; // load application 

        if (file_exists(ROOTPATH . APPVIEWS . '/view' . $fragments . '.php')) { 
         require ROOTPATH . APPVIEWS . '/view' . $fragments . '.php';// load view 
        } 
       } 
       // End ENGINE 
      }  
     } 
    } ?> 

ठीक है, जैसा कि आप मेरे सामने नियंत्रक देखना , इसलिए मुझे पता है कि यह असफल रहा है, मैं अपने प्रोजेक्ट को लगभग पूरा करने के बाद बस असफल हूं, जब मुझे www.someurl.com/?$getuser या www.someurl.com/myname या उपयोगकर्ता को करने की आवश्यकता है।

वैसे भी मेरा सवाल यह है कि हमें वास्तव में PHP के लिए एमवीसी की आवश्यकता होती है?

मैं फेसबुक पर देख रहा हूँ, आदि

वे तब भी उपयोग ?this=blabla वे MVC नहीं हैं तो मिलता है, यह सही है? वैसे भी मैं अभी भी उलझन में हूं कि फेसबुक www.facebook.com/myname इसके बिना कैसे करता है। (htaccess?)

यदि वे एमवीसी का उपयोग नहीं करते हैं तो हमें वास्तव में इसकी आवश्यकता कब होती है?

नोट:

मैं जब MVC का उपयोग के बारे में कई धागा पढ़ा है, लेकिन मैं अपने समस्या में एक नहीं मिला है, अगर वहाँ एक टिप्पणी छोड़ कृपया तो मैं पढ़ सकते हैं :)

बहुत बहुत धन्यवाद।

+2

http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller – skaffman

+0

आशा है कि आपको आवश्यक उत्तर मिल जाएगा। –

+0

yup अभी भी उलझन में है, जब व्यावहारिक शैली (पुरानी प्रोग्रामिंग शैली) का उपयोग करते समय एमवीसी का उपयोग करते समय नियंत्रक विचार (एक फ़ाइल में) शामिल हैं। शायद बीमार 2 दिन या अधिक प्रतीक्षा करें: | । बीटीडब्ल्यू अच्छा जवाब ए जे। बस कुछ समय चाहिए। –

उत्तर

5

मेरा मानना ​​है कि आप एमवीसी के बीच उलझन में हैं और RESTful URL scheme (http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services) हैं।

एमवीसी सिर्फ एक कोडिंग पैटर्न है जो संस्थाओं और मॉड्यूल को अलग करता है। जीयूआई टेम्पलेट्स से एप्लिकेशन लॉजिक की तरह, यूआरएल पैटर्न पूरी तरह से एक अलग बात है। यूआरएल सिर्फ वेब संसाधन तक पहुंचने के लिए हैं। कोडइग्निटर जैसे एमवीसी फ्रेमवर्क अभी भी आपको 'बदसूरत' यूआरएल दे सकते हैं यदि आप इसे एचटीएसीएसी

+0

मुझे लगता है कि मैं mod_rewrite का उल्लेख करना भूल गया लेकिन दूसरों ने पहले से ही ऐसा किया है। –

2

एमवीसी एक वास्तुशिल्प पैटर्न है जो चिंताओं को अलग करने पर केंद्रित है; यूआरएल के पास इसके साथ कुछ लेना देना नहीं है।

यूआरएल सर्वर द्वारा संभाला जाता है। यदि यह अपाचे है जिसका आप उपयोग कर रहे हैं, mod_rewrite सेट अप करें।

कहा जा रहा है कि आप पहिया को फिर से नहीं लेना चाहते हैं, लेकिन वहां उपलब्ध विकल्पों को देखें, वहां बहुत सारे एमवीसी उन्मुख PHP ढांचे हैं। अपनी पसंद के किसी को ढूंढें और इसमें उत्पादक हो और इसका उपयोग कर सकें।

+0

यह समझने में मदद करता है कि एमवीसी क्या है और यह आपके लिए यह एक ढांचा का उपयोग करने से पहले कैसे काम करता है। एक साधारण एमवीसी पैटर्न को कार्यान्वित करना यह पता लगाने का एक अच्छा तरीका है कि यह कैसे काम करता है, इमो। – cbednarski

0

आप वास्तव में अपने स्वयं के एमवीसी लिखने का प्रयास कर अपने आप को कठिन बना रहे हैं। (आप यूआरएल योजना में हेरफेर करके ऐसा नहीं कर रहे हैं)। हालांकि यह स्वयं को लिखने के लिए एक अच्छा शैक्षिक अनुभव है, लेकिन आपको पहिया को पुन: पेश करके गुणवत्ता का स्तर और एमवीसी पैटर्न के लाभ नहीं मिलेगा।

अपने ऐप को सिम्फनी, ज़ेंड, कोडिनेटर केक या किसी भी अच्छे ओपन सोर्स एमवीसी फ्रेमवर्क में लिखें। जब आपको यह महसूस होता है कि इसे कैसे काम करना चाहिए, तो आपको मज़े के लिए अपना खुद का बनाना चाहिए।

ये ढांचे आपकी परियोजनाओं को कोड और तेज़ी से बनाए रखने के लिए मौजूद हैं।

+0

यह [सिम्फनी] (http://www.symfony-project.org/) – NullUserException

+0

: | , बीटीडब्ल्यू वास्तव में इसकी जरूरत है? जब मैं वास्तव में एमवीसी की आवश्यकता होती है तो मैं कब कह सकता हूं? –

+1

@ एडम रमजान एमवीसी एक डिजाइन पैटर्न है। प्रत्येक डिज़ाइन पैटर्न में अपने सैद्धांतिक उपयोग होते हैं, और कार्यान्वयन विवरण आमतौर पर पैटर्न से भिन्न होते हैं। यह जानने का एकमात्र तरीका है कि आपको एमवीसी से लाभ होगा या नहीं, यह समझना है कि एमवीसी क्या है और यह आपके प्रोजेक्ट से कैसे संबंधित है। – cbednarski

1

आप CodeIgniter या cakePHP जैसे कई अलग-अलग एमवीसी ढांचे का उपयोग करके शुरू करने पर विचार कर सकते हैं। इन ढांचे में कई लोगों द्वारा विकसित किया गया है और समय की अवधि में परिष्कृत किया गया है। एमवीसी आवश्यक नहीं है, लेकिन बॉयलरप्लेट स्थापित होने के बाद, वेब अनुप्रयोग बनाना बहुत तेज़ है।

+0

मैं इसके साथ सहमत होगा। केकपीएचपी का उपयोग करना बहुत सारी चीजें छुपाता है जिनके बारे में आपको चिंता करने की ज़रूरत नहीं है ताकि आप अपना काम पूरा कर सकें। – speshak

2

मुझे लगता है कि आप क्वेरी पैराम्स के साथ एमवीसी को भ्रमित कर रहे हैं। दोनों जरूरी नहीं हैं, हालांकि यह सच है कि अधिक लोकप्रिय PHP एमवीसी फ्रेमवर्क mod_rewrite या समकक्ष विधि का उपयोग कर पैरा को मुखौटा करते हैं।

एमवीसी बस आपके प्रेजेंटेशन तर्क को आपके व्यावसायिक तर्क से अलग रखने का एक तरीका है।इस बारे में सोचें: यदि आपके पास एमवीसी का उपयोग करने वाली साइट है, तो आप ब्राउज़र पर आधारित विचारों को आसानी से बदलकर आसानी से मोबाइल फोन संस्करण बना सकते हैं, आपकी साइट के तर्क को बदलने की जरूरत नहीं है, केवल HTML को भेजा गया है ग्राहक।

2

ऐसा लगता है कि आपका प्रश्न दो अलग-अलग विषयों को एक साथ भ्रमित कर रहा है। मॉडल व्यू कंट्रोलर (एमवीसी) और सुंदर यूआरएल।

मॉडल नियंत्रक देखें एक डिजाइन प्रतिमान जो आप अपने तर्क (मॉडल), अपने टेम्पलेट्स (दृश्य) और अपने निर्देशन इनपुट/आउटपुट (नियंत्रक) को अलग करने की अनुमति देता है। दूसरी ओर

सुंदर यूआरएल, प्रारूप नियम (आम तौर पर .htaccess नियम) के आधार पर यूआरएल रीडायरेक्ट करने के लिए अनुमति देते हैं।

Model-View-Controller - डिज़ाइन प्रतिमान जानकारी।

Pretty URLs tutorial - अपाचे के mod_rewrite का उपयोग करने के कार्यान्वयन।

mod_rewrite - एक पुनर्लेख इंजन क्या है इस बारे में जानकारी।

+0

तो सही रास्ते पर im? –

+0

एमवीसी कई कारणों से उपयोग करने के लिए एक अच्छा पैटर्न है, जो खुद को खरोंच से बनाते हैं, हालांकि यह सबसे अच्छा तरीका नहीं हो सकता है। मैं कहूंगा कि लोकप्रिय PHP ढांचे को देखने के लिए कि वे आपके सामने आने वाले मुद्दों से कैसे संपर्क करते हैं। http://framework.zend.com/, http://cakephp.org/, और http://www.symfony-project.org/ सभी बहुत ही लोकप्रिय ढांचे हैं। –

1

उपयोग करने के लिए ... हर समय, एक अच्छा अभ्यास है।

व्यक्तिगत रूप से, मेरी पसंद: सिमफोन और सिद्धांत टीम द्वारा बड़े अनुप्रयोगों को लिखना आसान हो सकता है। लेकिन CodeIgniter के साथ शुरू किया।

+0

PHP ढांचे को "सिम्फनी" कहा जाता है, वास्तविक शब्द "सिम्फनी" है। – NullUserException

+0

क्या आप हमेशा के बारे में निश्चित हैं? हम्म फेसबुक अभी भी www.facebook.com/editprofile.php का उपयोग करते हैं तो मुझे लगता है कि वे एक एमवीसी नहीं हैं? शायद हिपॉप कंपाइलर के becouse? ठीक है शायद बेवकूफ हूँ। –

+1

मैं वेब-विकास के सिद्धांत के बारे में बता रहा हूं। मुझे पूरा यकीन है कि वे नियंत्रण-मॉडल-व्यू अलगाव का उपयोग करते हैं। – ajile

2

अलग-अलग फ़ोल्डरों में अपना कोड, एचटीएमएल और डेटा सहेजना आपके आवेदन की संरचना का सबसे बुनियादी तरीका है - और यह एमवीसी लागू करने का प्राथमिक कारण है: संगठन।

अधिकांश ढांचे में मौजूद अन्य डिज़ाइन पैटर्न एमवीसी पूरक हैं, और वे कोड पुन: उपयोग, तीव्र विकास इत्यादि को बढ़ावा देते हैं, लेकिन आप एमवीसी के बिना भी बाद में कर सकते हैं - यह सब एक कोड लाइब्रेरी है! अधिकांश ढांचे एमवीसी डिजाइन पैटर्न का उपयोग करते हैं, लेकिन एमवीसी! = ढांचे।

कुछ ढांचे के लिए आपको एक ढांचा विस्तार करने के लिए अपाचे (लाइटी, एनजिनक्स, आदि) को ट्विक करने की आवश्यकता होती है। सुंदर यूआरएल इनपुट डेटा (व्यू) पेश करने का एक तरीका है जो नियंत्रक द्वारा उपभोग किया जाता है ताकि बाद वाला उपयुक्त हैंडलर तक जा सके। इस प्रकाश में देखा गया है, एचटीएसीएसी इस तरह के ढांचे के लिए एमवीसी का एक अभिन्न हिस्सा है।

इससे पहले कि आप अपनी परियोजना में गहराई से डुबकी लें, इससे थोड़ा और शोध करने में मदद मिलती है। अधिकांश ढांचे ने एमवीसी को घुलनशील दृष्टिकोण लिया है, जिसने कई लोगों को भ्रम पैदा किया है। Fat-Free Framework अधिक प्रत्यक्ष और आसान-से-पालन पथ का उपयोग करता है।

+0

f3 से प्यार है। क्या हम इसे एक एमवीसी कह सकते हैं? –

संबंधित मुद्दे