MVC kodlama geçiş için en iyi yolu nedir?

5 Cevap php

It's been around 5 months since I picked up a PHP book and started coding in PHP. At first, I created all my sites without any organizational plan or MVC. I soon found out that was a pain.. Then I started to read on stackoverflow on how to separate php and html and that's what I have been doing ever since.

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.

Bu şimdiye kadar tüm kodlama ayrılması olmuştur ve şimdi ben hareket ve MVC başlamalıdır hissediyorum nasıl olduğunu. Ama sorun daha önce sınıfları kullanılan ve onlarla emmek asla değildir. MVC (örneğin CakePHP'de ve CodeIgniter gibi) tüm sınıflar olduğundan, bu iyi olamaz.

My question: Is there any good books/sites/articles that teaches you how to code in MVC? I am looking for beginner beginner books :) I just started reading the codeigniter manuel and I think I am going to use that.

EDIT: bu kek, CodeIgniter, vb kullanmadan kodlama için MVC organizasyon yapısına sahip olmak mümkün mü? 3 farklı dosya (görünüm, kontrolör, model) içine temelde sadece ayrı diyelim profile.php

5 Cevap

Sorunuzu cevaplamak için

Is it possible to have a MVC organization structure to your coding without using cake, codeigniter, etc? Basically just separate say profile.php into 3 different files(the view, controller, model)

kesinlikle ...

İlk dosya profile.php (görünüm, tarayıcı tarafından çarpınca ne)

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

Kontrolör

<?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();
}

}

Model

<?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" );
}
}

MVC sadece bir tasarım modelidir. Bu gerçekten "kod içinde" yapabileceğim bir şey değil.

Eğer PHP kod isterseniz, burada bir article PHP MVC ile ilgili olduğunu. Bu tasarım deseni açıklayan bir bakış vardır, ve sonra bir örneği aşağıdadır.

How I learned was by going through this tutorial:
http://www.symfony-project.org/jobeet/1_4/Doctrine/en/

Birincil odak Symfony Framework öğrenmek için, ancak varsayılan olarak, size maruz kalan ve iyi MVC prensiplerini öğrenmek olacaktır.

PHP değil, ama Tate Acı Java bir kopyasını alabilirsiniz görmek. Bu (nasıl ve neden örgütsel kod şeyler artırır) şeyler örgütsel tarafını görüşecek.

PHP programlama için büyük Java kitaplardan biri tavsiye için biraz tereddüt ediyorum, ama bu kitap bir organizasyon planı olmadan yazılmış bir kod ile başlar ve 3. parti kütüphaneleri kullanmadan yapısı gibi bir MVC içine geliştirir birkaç biridir . Bu şekilde örgüt görüş pratik açıdan ne olduğunu öğretir. Eğer desen anlamak kez Umarım, PHP içine fikirleri çevirmek çok zor olmayacaktır.

Başka bir alternatif PHP çerçeveler onlarca birini kapmak ve çerçeveye recode etmektir. Aksi takdirde çok daha hızlı sonuç almak, ancak dezavantajı büyük olasılıkla daha ayrıntılı olarak bu sonuçları anlayacaksınız olduğunu, ve sıfırdan yeniden yazmak sonra kod aynı davranmaz küçük bir şans olacaktır. Hepimiz yeni şeyler eski şeyler yaptım her şeyi yapacağız düşünmek istiyorum, ama çoğu zaman biz bir şey unutmak (veya farklı davranır).

MVC herhangi bir dil için belirli olmayan bir "genel" tasarım modelidir. Bir kodlama felsefenin fazlası. En temel düzeyde, sadece sunum iş mantığı veri ayırıyor. Aşağıda MVC kullanarak bir "çiftleşmiş" sisteminin basit bir örnektir. Sen bir şey kırmadan parçaların herhangi takas mümkün olacaktır, ve veri biçimlendirme / ekrana bağlı değildir. Bu verimli değil, örnek kod.

Modeli, veri almak:

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

Kontrolör, bunu işler:

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

Görünüm, çıkış içeriği:

// 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);
}