Thử ngỏ gửi đến các doanh nghiệp có nhu cầu tuyển dụng - Tuyển thành viên cho nhóm QHO Researcher - 2012 - Về việc gởi câu hỏi trợ giúp trên diễn đàn -
+ Trả lời bài viết
Trang 1/7 1 2 3 ... CuốiCuối
Hiện kết quả từ 1 tới 10 của 69

Chủ đề: Khái quát về mô hình MVC trong PHP

  1. #1
    Nghỉ Phép Avatar của tuanva
    Tham gia ngày
    Nov 2008
    Đến từ
    ٩(•̮̮̃•̃)۶
    Bài gửi
    298
    Points
    397
    Credits
    70
    Like
    69
    Được Like 206 lần trong 52 bài viết

    Post Khái quát về mô hình MVC trong PHP

    MVC = Model - View - Controller = Truy vấn - Nhập & Hiển Thị - Phần còn lại của 2 cái kia

    Việc chính yếu trong sử dụng MVC là để tách biệt các phần trong chương trình của mình.

    Ví dụ cho mô hình bình thường
    PHP Code:
    <?php
    $connect 
    mysql_connect('myserver''mylogin''mypassword');
    mysql_select_db('myDB');
    if (
    $_SERVER['REQUEST_METHOD'] == 'POST') {
        
    $news_id $_POST['news_id'];
        
    mysql_query("INSERT INTO commentaires SET news_id='$news_id',
                                                  auteur='"
    .mysql_escape_string($_POST['auteur'])."',
                                                  texte='"
    .mysql_escape_string($_POST['texte'])."',
                                                  date=NOW()"
                   
    );
        
    header("location: ".$_SERVER['PHP_SELF']."?news_id=$news_id");
        exit;
    } else {
        
    $news_id $_GET['news_id'];
    }
    ?>
    <html>
        <head>
            <title>Les news</title>
        </head>
        <body>
        <h1>Les news</h1>
        <div id="news">
            <?php
            $news_req 
    mysql_query("SELECT * FROM news WHERE id='$news_id'");
            
    $news mysql_fetch_array($news_req);
            
    ?>
        <h2><?php echo $news['titre'?> postée le <?php echo $news['date'?></h2>
        <p><?php echo $news['texte_nouvelle'?> </p>
            <?php
            $comment_req 
    mysql_query("SELECT * FROM commentaires WHERE news_id='$news_id'");
            
    $nbre_comment mysql_num_rows($comment_req);
            
    ?>
        <h3><?php echo $nbre_comment ?> commentaires relatifs à cette nouvelle</h3>
            <?php while ($comment mysql_fetch_array($comment_req)) {?>
                <h3><?php echo $comment['auteur'?> a écrit le <?php echo $comment['date'?></h3>
                <p><?php echo $comment['texte'?></p>
            <?php ?>
        <form method="POST" action="<?php echo $_SERVER['PHP_SELF'?>" name="ajoutcomment">
            <input type="hidden" name="news_id" value="<?php echo $news_id?>">
            <input type="text" name="auteur" value="Votre nom"><br />
            <textarea name="texte" rows="5" cols="10">Saisissez votre commentaire</textarea><br />
            <input type="submit" name="submit" value="Envoyer">
        </form>
        </div>
        </body>
    </html>

    Nếu làm theo mô hình MVC, thì code phía trên sẽ được chia làm 3 file khác nhau.

    1 là file mymodel.php dùng để xử lý thông tin trong database
    PHP Code:
    <?php
    function dbconnect()
    {
    static 
    $connect null;
    if (
    $connect === null) {
        
    $connect mysql_connect('myserver''mylogin''mypassword');
        
    mysql_select_db('myDB');
    }
    return 
    $connect;
    }

    function 
    get_news($id)
    {
    $news_req mysql_query("SELECT * FROM news WHERE id='$news_id'",dbconnect());
    return 
    mysql_fetch_array($news_req);
    }

    function 
    get_comment($news_id)
    {
    $comment_req mysql_query("SELECT * FROM commentaires WHERE news_id='$news_id'",dbconnect());
    $result = array();
    while (
    $comment mysql_fetch_array($comment_req)) {
        
    $result[] = $comment;
    }
    return 
    $result;
    }

    function 
    insert_comment($comment)
    {
    mysql_query("INSERT INTO commentaires SET news_id='{$comment['news_id']}',
                                              auteur='"
    .mysql_real_escape_string($comment['auteur'])."',
                                              texte='"
    .mysql_real_escape_string($comment['texte'])."',
                                              date=NOW()"
                
    ,dbconnect() );
    }
    2 là file myview.php chứa phần html hiển thị
    HTML Code:
    <html>
    	<head>
    		<title>Les news</title>
    	</head>
    	<body>
    	<h1>Les news</h1>
    	<div id="news">
    	<h2><?php echo $news['titre'] ?> postée le <?php echo $news['date'] ?></h2>
    	<p><?php echo $news['texte_nouvelle'] ?> </p>
    	<h3><?php echo $nbre_comment ?> commentaires relatifs à cette nouvelle</h3>
    		<?php foreach ($comments AS $comment) {?>
    			<h3><?php echo $comment['auteur'] ?> a écrit le <?php echo $comment['date'] ?></h3>
    			<p><?php echo $comment['texte'] ?></p>
    		<?php } ?>
    	<form method="POST" action="<?php echo $_SERVER['PHP_SELF'] ?>" name="ajoutcomment">
    		<input type="hidden" name="news_id" value="<?php echo $news_id?>">
    		<input type="text" name="auteur" value="Votre nom"><br />
    		<textarea name="texte" rows="5" cols="10">Saisissez votre commentaire</textarea><br />
    		<input type="submit" name="submit" value="Envoyer">
    	</form>
    	</div>
    	</body>
    </html>
    3 là file mycontroller.php để xử lý vấn đề
    PHP Code:
    <?php
    require ('mymodel.php');
    if (
    $_SERVER['REQUEST_METHOD'] == 'POST') {
        
    insert_comment($_POST);
        
    header("HTTP/1.1 301 Moved Permanently"); 
        
    header("location: {$_SERVER['PHP_SELF']}?news_id={$_POST['news_id']}");
        exit;
    } else {
        
    $news get_news($_GET['news_id']);
        
    $comments get_comments($_GET['news_id']);
        require (
    'myview.php');
    }
    ?>

    Xong...đó là mô hình MVC đơn giản nhất .. có thể thấy rõ việc tách biệt các loại thông tin cần xử lý để có thể dễ dàng can thiệp vào từng phần khác nhau của chương trình

    Mô hình MVC đơn giản


    Sơ đồ 1 chuỗi MVC đơn giản


    Sau cùng là 1 cách phức tạp hơn để hiểu về mô hình MVC



    Nguồn : phpvn.org
    Lần sửa cuối bởi tuanva; 08-29-2009 lúc 10:01 AM
    Start by doing what's
    NECESSARY,


    then what's
    POSSIBLE,


    and suddenly you
    are doing the
    IMPOSSIBLE.

  2. Hiện có 10 thành viên Like bài viết của tuanva:

    buithedo (04-16-2012), haanhdon (10-16-2011), huuquyen1990 (07-09-2012), kennyfans (07-09-2012), saccly (10-12-2012), simbat (03-26-2012), urbane90 (05-07-2013), vanmui255 (04-10-2012), XuanDuc_Thinker (08-11-2014), xuansonitvn (07-27-2013)

  3. #2
    Học Viên QHOnline Avatar của thienthandem231288
    Tham gia ngày
    Jun 2009
    Bài gửi
    45
    Points
    91
    Credits
    100
    Like
    5
    Thanked 4 Times in 1 Post

    Mặc định

    Thanhk nha........................
    Vấn thế gian tình thị hà vật?:D

  4. #3
    Học Viên QHOnline Avatar của LearnPHP
    Tham gia ngày
    Jun 2009
    Bài gửi
    3
    Points
    -2
    Credits
    0
    Like
    0
    Được Like 0 lần trong 0 bài viết

    Mặc định

    Thank ban ve bai viet MVC.

  5. #4
    QHO Researcher Avatar của songpham
    Tham gia ngày
    Jul 2008
    Bài gửi
    477
    Points
    1.041
    Credits
    50
    Like
    92
    Được Like 202 lần trong 80 bài viết

    Mặc định

    Trời , bài viết này hay wá ! thanks tuấn nhé

  6. #5
    mr_phong_web
    Guest Avatar của mr_phong_web

    Mặc định

    Thầy cho ý kiến, và có thể áp dụng 3 lớp vào php dược ko?

  7. #6
    Học Viên QHOnline Avatar của kingpham
    Tham gia ngày
    Sep 2009
    Bài gửi
    30
    Points
    97
    Credits
    15
    Like
    20
    Được Like 8 lần trong 4 bài viết

    Mặc định

    cung duoc day nhi

  8. #7
    Member Avatar của ruaden02
    Tham gia ngày
    Dec 2010
    Bài gửi
    61
    Points
    -11
    Credits
    0
    Like
    13
    Được Like 6 lần trong 6 bài viết

    Mặc định

    thanks anh nha , phải từ từ ngâm cứu mới đc

  9. #8
    Junior Member Avatar của duongcat
    Tham gia ngày
    Feb 2011
    Bài gửi
    20
    Points
    30
    Credits
    0
    Like
    0
    Được Like 0 lần trong 0 bài viết

    Mặc định

    Thanks nhiều nha

  10. #9
    thanhduan89
    Guest Avatar của thanhduan89

    Mặc định

    Thanks, dang cần cái này!!!

  11. #10
    thanhduan89
    Guest Avatar của thanhduan89

    Mặc định

    Cái này rất hay

+ Trả lời bài viết
  • Tags for this Thread

    Quyền viết bài

    • Bạn không thể gửi chủ đề mới
    • Bạn không thể gửi trả lời
    • Bạn không thể gửi file đính kèm
    • Bạn không thể sửa bài viết của mình

    Lap Trinh PHP Can Ban - Lap Trinh PHP Nang Cao - Hoc PHP - PHP MYSQL Online - PHP Framework - Dao Tao PHP - Hoc PHP O Dau
    CakePHP Framework - Zend Framework - Hoc Zend Framework - CodeIgniter Framework -