pedia-learning

ورود

گذرواژه‌تان را فراموش کرده‌اید؟

ثبت نام

ثبت نام
انجمن عمومی گسترش فناوری آگو

اگر اولین بار از انجمن بازدید می کنید برای دسترسی کامل به انجمن عضو شوید بعد عضویت قادر به ارسال مطلب و شرکت در بحث خواهید داشت

ارسال پاسخ 
 
امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
ساخت یک نمونه ساده mvc
02-05-2013, 02:46 PM
ارسال: #1
ساخت یک نمونه ساده mvc
index.php

کد php:
<?php
require_once('lib/DataAccess.php');
require_once(
'lib/ProductModel.php');
require_once(
'lib/ProductView.php');
require_once(
'lib/ProductController.php');
 
$dao=& new DataAccess ('localhost','user','pass','dbname');
$productModel=& new ProductModel($dao);
$productController=& new ProductController($productModel,$_GET);
echo 
$productController->display();
?>

lib/ProductView.php

کد php:
<?php
/**
 *  Binds product data to HTML rendering
 */
class ProductView {
    
/**
    * Private
    * $model an instance of the ProductModel class
    */
    
var $model;
 
    
/**
    * Private
    * $output rendered HTML is stored here for display
    */
    
var $output;
 
    
//! A constructor.
    /**
    * Constucts a new ProductView object
    * @param $model an instance of the ProductModel class
    */
    
function ProductView (&$model) {
        
$this->model=& $model;
    }
 
    
//! A manipulator
    /**
    * Builds the top of an HTML page
    * @return void
    */
    
function header () {
        
$this->output=
        <<<EOD
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> Our Products </title>
<style>
body { font-size: 13.75px; font-family: verdana }
td { font-size: 13.75px; font-family: verdana }
.title { font-size: 15.75px; font-weight: bold; font-family: verdana }
.heading {
    font-size: 13.75px; font-weight: bold;
    font-family: verdana; background-color: #f7f8f9 }
.nav { background-color: #f7f8f9 }
</style>
</head>
<body>
<div align="center" class="title">Our Products</div>
EOD;
        
$this->output.="\n<div align=\"right\"><a href=\"".
            
$_SERVER['PHP_SELF']."\">Start Over</a></div>\n";
 
    }
 
    
//! A manipulator
    /**
    * Builds the bottom of an HTML page
    * @return void
    */
    
function footer () {
        
$this->output.="</body>\n</html>";
    }
 
    
//! A manipulator
    /**
    * Displays a single product
    * @return void
    */
    
function productItem($id=1) {
        
$this->model->listProduct($id);
        while ( 
$product=$this->model->getProduct() ) {
            
$this->output.="<p><b>Name</b>:".$product['PRODUCTNAME']."</p>".
                
"<p><b>Price</b>:".$product['UNITPRICE']."</p>".
                
"<p><b># In Stock</b>:".$product['UNITSINSTOCK']."</p>";
            if ( 
$this->$product['DISCONTINUED']==) {
                
$this->output.="<p>This product has been discontinued.</p>";
            }
        }
    }
 
    
//! A manipulator
    /**
    * Builds a product table
    * @return void
    */
    
function productTable($rownum=1) {
        
$rowsperpage='20';
        
$this->model->listProducts($rownum,$rowsperpage);
        
$this->output.="<table width=\"600\" align=\"center\">\n<tr>\n".
                
"<td class=\"heading\">Name</td>\n".
                
"<td class=\"heading\">Price</td>\n</tr>\n";
        while ( 
$product=$this->model->getProduct() ) {
            
$this->output.="<tr>\n<td><a href=\"".$_SERVER['PHP_SELF'].
                
"?view=product&id=".$product['PRODUCTID']."\">".
                
$product['PRODUCTNAME']."</a></td>".
                
"<td>".$product['UNITPRICE']."</td>\n</tr>\n";
        }
        
$this->output.="<tr class=\"nav\">\n";
        if ( 
$rownum!=&& $rownum $rowsperpage ) {
            
$this->output.="<td><a href=\"".$_SERVER['PHP_SELF'].
                
"?view=table&rownum=".($rownum-$rowsperpage).
                
"\"><< Prev</a></td>";
        } else {
            
$this->output.="<td>&nbsp;</td>";           
        }
        if ( 
$product['PRODUCTID'] < ($rownum $rowsperpage) ) {
            
$this->output.="<td><a href=\"".$_SERVER['PHP_SELF'].
                
"?view=table&rownum=".($rownum+$rowsperpage).
                
"\">Next >></a></td>";
        } else {
            
$this->output.="<td>&nbsp;</td>\n";           
        }
        
$this->output.="</tr>\n</table>\n";
    }
 
    
//! An accessor
    /**
    * Returns the rendered HTML
    * @return string
    */
    
function display () {
        return 
$this->output;
    }
}
?>

lib/ProductController.php

کد php:
<?php
/**
 *  Controls the application
 */
class ProductController extends ProductView {
 
    
//! A constructor.
    /**
    * Constucts a new ProductController object
    * @param $model an instance of the ProductModel class
    * @param $getvars the incoming HTTP GET method variables
    */
    
function ProductController (&$model,$getvars=null) {
        
ProductView::ProductView($model);
        
$this->header();
        switch ( 
$getvars['view'] ) {
            case 
"product":
                
$this->productItem($getvars['id']);
                break;
            default:
                if ( empty (
$getvars['rownum']) ) {
                    
$this->productTable();
                } else {
                    
$this->productTable($getvars['rownum']);
                }
                break;
        }
        
$this->footer();
    }
}
?>

lib/ProductModel.php

کد php:
<?php
/**
 *  Fetches "products" from the database
 */
class ProductModel {
    
/**
    * Private
    * $dao an instance of the DataAccess class
    */
    
var $dao;
 
    
//! A constructor.
    /**
    * Constucts a new ProductModel object
    * @param $dbobject an instance of the DataAccess class
    */
    
function ProductModel (&$dao) {
        
$this->dao=& $dao;
    }
 
    
//! A manipulator
    /**
    * Tells the $dboject to store this query as a resource
    * @param $start the row to start from
    * @param $rows the number of rows to fetch
    * @return void
    */
    
function listProducts($start=1,$rows=50) {
        
$this->dao->fetch("SELECT * FROM products LIMIT ".$start.", ".$rows);
    }
 
    
//! A manipulator
    /**
    * Tells the $dboject to store this query as a resource
    * @param $id a primary key for a row
    * @return void
    */
    
function listProduct($id) {
        
$this->dao->fetch("SELECT * FROM products WHERE PRODUCTID='".$id."'");
    }
 
    
//! A manipulator
    /**
    * Fetches a product as an associative array from the $dbobject
    * @return mixed
    */
    
function getProduct() {
        if ( 
$product=$this->dao->getRow() )
            return 
$product;
        else
            return 
false;
    }
}
?>

Dataaccess.php

کد php:
<?php
/**
 *  A simple class for querying MySQL
 */
class DataAccess {
    
/**
    * Private
    * $db stores a database resource
    */
    
var $db;
    
/**
    * Private
    * $query stores a query resource
    */
    
var $query// Query resource
 
    //! A constructor.
    /**
    * Constucts a new DataAccess object
    * @param $host string hostname for dbserver
    * @param $user string dbserver user
    * @param $pass string dbserver user password
    * @param $db string database name
    */
    
function DataAccess ($host,$user,$pass,$db) {
        
$this->db=mysql_pconnect($host,$user,$pass);
        
mysql_select_db($db,$this->db);
    }
 
    
//! An accessor
    /**
    * Fetches a query resources and stores it in a local member
    * @param $sql string the database query to run
    * @return void
    */
    
function fetch($sql) {
        
$this->query=mysql_unbuffered_query($sql,$this->db); // Perform query here
    
}
 
    
//! An accessor
    /**
    * Returns an associative array of a query row
    * @return mixed
    */
    
function getRow () {
        if ( 
$row=mysql_fetch_array($this->query,MYSQL_ASSOC) )
            return 
$row;
        else
            return 
false;
    }
}
?>
نقل قول این ارسال در یک پاسخ
ارسال پاسخ 


پیام‌های داخل این موضوع
ساخت یک نمونه ساده mvc - agotd - 02-05-2013 02:46 PM

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان


Persian Translation by MyBBIran.com - Ver: 4.1
Powered by MyBB, © 2002-2024 MyBB Group.
Theme designed by Marvel (Sidebar created by Yaldaram - Yaldaram.com)
Theme Translation by Mt Edition