2010-05-17 19 views
6

यह लगभग 5 महीने हो गया है जब से मैंने एक PHP पुस्तक उठाई और PHP में कोडिंग शुरू कर दी। सबसे पहले, मैंने अपनी सभी साइटें बिना किसी संगठनात्मक योजना या एमवीसी के बनाई। मुझे जल्द ही पता चला कि दर्द था .. फिर मैंने php और html को अलग करने के तरीके पर स्टैक ओवरफ्लो पर पढ़ना शुरू किया और यही वह है जो मैं तब से कर रहा हूं।एमवीसी कोडिंग में संक्रमण का सबसे अच्छा तरीका क्या है?

Ex: 
profile.php <--this file is HTML,css. I just echo the functions here. 
profile_functions.php <--this file is mostly PHP. has the functions. 

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

मेरा प्रश्न: क्या कोई अच्छी किताबें/साइट्स/आलेख हैं जो आपको एमवीसी में कोड कैसे सिखाता है? मैं शुरुआत शुरुआत किताबें रहा हूँ :) मैं सिर्फ the codeigniter manuel पढ़ना शुरू किया और मुझे लगता है कि मुझे लगता है कि उपयोग करने के लिए जा रहा हूँ।

संपादित करें: क्या केक, कोडनिर्देशक इत्यादि के बिना आपके कोडिंग में एमवीसी संगठन संरचना हो सकती है? मूल रूप से सिर्फ अलग 3 अलग फ़ाइलें (देखने के लिए, नियंत्रक, मॉडल)

+0

ज़रूर, यह एक रूपरेखा के बिना एक MVC तरह से लिखने के लिए संभव है ... लेकिन ढांचे आप सर्वोत्तम प्रथाओं सिखा देगा और आप सभी पाइपलाइन कोड यह सब काम करता है कि लिखने के लिए नहीं होगा । – Armstrongest

उत्तर

1

अपने सवाल का जवाब देने

क्या केक, कोडनिर्देशक इत्यादि के बिना आपके कोडिंग पर एमवीसी संगठन संरचना संभव है? मूल रूप से सिर्फ इतना कहना अलग profile.php 3 में विभिन्न फ़ाइलें ( देखने के लिए, नियंत्रक, मॉडल)

बिल्कुल ...

पहली फ़ाइल profile.php (देखने के लिए, क्या ने टक्कर मार दी हो जाता है ब्राउज़र)

<?php 
include('controllers/UsersController.php'); 
$controller = new UsersController(); 
$controller->profile(); 
$pageData = $controller->data; 
?> 

नियंत्रक

<?php 
include 'models/UsersModel.php'; 
class UsersController{ 

public $data; 
public $model; 

public function __construct(){ 
    $this->model = new UserModel(); 
} 

public function profile(){ 
    $this->data = $this->model->findUser(); 
} 

} 

मॉडल

<?php 

class UsersModel{ 

public function __constuct(){ 
    // connect to your db or whatever you need to do 
} 

public function findUser(){ 
    return mysql_query("SELECT * FROM users WHERE users.id = 2 LIMIT 1"); 
} 
} 
1

MVC सिर्फ एक डिजाइन पैटर्न है में profile.php का कहना है। यह वास्तव में कुछ नहीं है जिसे आप "कोड" कर सकते हैं।

आप PHP में कोड करने के लिए पसंद करते हैं, यहाँ एक article PHP में MVC के बारे में है। इसमें डिज़ाइन पैटर्न को समझाते हुए एक अवलोकन है, और फिर एक उदाहरण निम्नानुसार है।

1

मैं कैसे सीखा इस ट्यूटोरियल के माध्यम से जाने के द्वारा किया गया:
http://www.symfony-project.org/jobeet/1_4/Doctrine/en/

प्राथमिक ध्यान सिम्फोनी ढांचा जानने के लिए है, लेकिन डिफ़ॉल्ट रूप से, आप के संपर्क में आएंगे और अच्छे MVC सिद्धांतों सीखना।

+0

क्या सिम्फनी कोडिनेटर की तरह एक और PHP ढांचा है? – ggfan

+1

हां - लेकिन बेहतर - इसे लाओ;) –

1

यह पीएचपी नहीं है, लेकिन आप टेट के कड़वे जावा की एक प्रति प्राप्त कर सकते हैं देखते हैं। यह चीजों के संगठनात्मक पक्ष पर चर्चा करेगा (कैसे और क्यों संगठनात्मक कोड सामान में सुधार करता है)।

मैं थोड़ा संकोच पीएचपी प्रोग्रामिंग के लिए महान जावा पुस्तकों में से एक सिफारिश करने के लिए कर रहा हूँ, लेकिन इस किताब को कुछ है कि एक संगठनात्मक योजना के बिना लिखे कोड के साथ शुरू होता है और उपयोग के बिना संरचना की तरह एक MVC में यह बेहतर बनाता है में से एक है तीसरे पक्ष पुस्तकालयों के। इस तरह यह आपको सिखाता है कि संगठन व्यावहारिक दृष्टिकोण से क्या है। उम्मीद है कि पैटर्न को समझने के बाद, विचारों को PHP में अनुवाद करना बहुत कठिन नहीं होगा।

एक अन्य वैकल्पिक पीएचपी चौखटे और ढांचे के लिए recode के दर्जनों में से एक हड़पने के लिए है। ऐसा करने से आपके परिणाम बहुत तेज़ी से मिल जाएंगे, लेकिन दोष यह है कि आप उन परिणामों को अधिक विस्तार से समझेंगे, और स्क्रैच से इसे फिर से लिखने के बाद आपका कोड ऐसा व्यवहार नहीं करेगा। हम सभी को यह सोचना पसंद है कि नई चीजें पुरानी चीजें जो कुछ भी करती हैं, लेकिन अक्सर हम कुछ भूल जाते हैं (या यह अलग-अलग व्यवहार करता है)।

1

MVC एक "सामान्य" डिजाइन पैटर्न है कि किसी भी भाषा के लिए विशेष रूप से नहीं है। एक कोडिंग दर्शन के अधिक। सबसे बुनियादी स्तर पर यह प्रस्तुति से व्यापार तर्क से डेटा को अलग कर रहा है। नीचे एमवीसी का उपयोग कर "टेम्पलेटिंग" प्रणाली का एक सरल उदाहरण है। आप किसी भी हिस्से को तोड़ने के बिना किसी भी हिस्से को स्वैप करने में सक्षम होंगे, और डेटा स्वरूपण/प्रदर्शन से बंधे नहीं है। यह नमूना कोड है, कुशल नहीं है।

मॉडल, डेटा प्राप्त:

$name = getName(1); 
$name['_fullname_'] = $name['_first_'].' '.$name['_mi_'].'. '.$name['_last_']; 
outputView($name); 

देखें, उत्पादन सामग्री:

function getName($id) { 
    $name = array('_first_'=>'Joe', '_last_'=>'Smith', '_mi_'=>'C'); 
    return $name 
} 

नियंत्रक, यह प्रक्रियाओं

// Example html file: <b>Hello _fullname_, how are you</b> 
function outputView($view, $data) { 
    switch ($view) { 
    case 'xml': 
     $out = file_get_contents('view.xml'); 
    case 'html': 
     $out = file_get_contents('view.html'); 
    case 'json': 
     $out = file_get_contents('view.json'); 
    } 
    $search_for = array_keys($data); 
    $replace_with = $data; 
    echo str_replace($search_for, $replace_with, $out); 
} 
संबंधित मुद्दे