English 中文(简体)
PHP中MVC的例子是什么?
原标题:What is an example of MVC in PHP?
  • 时间:2010-05-09 00:49:35
  •  标签:
  • php

我试图理解MVC模式。 在我看来,我的是:

模式:

<?php 
if($a == 2){
    $variable =  two ;
}
else{
    $variable =  not two ;
}
$this->output->addContent($variable);
$this->output->displayContent();
?> 

观点:

<?php 

class output{

    private $content;

    public function addContent($var){
        $this->content =   The variable is  .$var;
    }

    public function displayContent(){
        include  header.php ;
        echo $content;
        include  footer.php ;
    }

}
?>

这项权利吗? 如果是,控制者是什么?

问题回答

控制器是你的逻辑,模型是你的数据,并认为是你的产出。

因此,这是控制者:

$model = new UserDB();
$user = $model->getUser("Chacha102");
$view = new UserPage($user->getName(), $user->getEmail());

echo $view->getHTML();

模型是用户行类,将提供我的数据。 使用者的看法是,我向模型提供数据,然后将产生这一页。

如你所看到的那样,控制员在这方面做得不错,因为你只是获得用户数据并显示数据。 这就是MVC的美容。 控制器确实必须处理用户库或超文本,它只是对数据进行 gr弄,并把它传达给大家。

而且,这种观点并不了解该模式,而该模式也不了解任何观点。 因此,你可以有机会执行其中一项行动,而另一方面,这又产生了影响。


与你的榜样相比,你的看法是正确的,但你的控制者和模式却好坏参半。

可以通过下列方式缓解:

主计长:

$model = new NumberToWord();
$word = $model->getWord($a);
$this->output->addContent($word);
$this->output->displayContent();

模式:

class NumberToWord{
    public function getWord($number)
    {
        if($number == 2){
            return  two ;
        }
        else{
             return  not two ;
        }
    }
 }

保持你同样的产出

主计长收到用户要求——通常有某种路由器,使用URL,并将请求与适当的控制器方法联系起来。

模型被控制人用来向数据库(或其他数据来源)查询数据。

要求控制人员提出意见,使实际的超文本产出得以实现。

如果大家想这样做,就会建立一个简单的模板系统,那么,你可以:

$content =  blaba ;
$tpl = file_get_contents( tpl.html );
echo str_replace( {content} ,$content,$tpl);

模板文件如下:

<html>
<head><title>Whatever</title></head>
<body>{content}</body>
</html>

例如,你更喜欢把主计长分成一个模式和观点。

  • Model: Business logic / rules and typically some sort of database to object relational mapping
  • Controller: Responds to url requests by pulling together the appropriate Model(s) and View(s) to build an output.
  • View: The visual structure the output will take. Typically a "dumb" component.

当你第一次碰到网络设计,主要是因为大多数网络框架根本不是MVC,但与PAC>有着更密切的联系。 换言之,《示范公约》和《观点》不谈,但根据主计长从特定请求中了解到的情况,是两个因素一起走。 查阅Larry Garfield关于这一主题的出色评注,以便了解更多信息:

http://www.garfieldtech.com/blog/mvc-vs-pac

此外,如果你对多国师协会的发展模式感兴趣,我建议你下载许多框架中的一个,并通过辅导或二个。 Kohana, CodeIgnitor, CakePHP and Zend应当足以启动谷歌-a-thon!

这里是使用购买力平价的甚简单例子。 一条缺失的路由。 它选择一名控制者从事这项工作。 我们只有一个控制者,即客户。

如果我们将其与3级相比的话。

Model: The database View: Client Server:Controller Router:It selects a controller

当你从网上浏览器的申请书中选择一些东西时,该请求便从路由到控制器。 主计长询问模式并提出意见。 意见已提交阁下。

只有模式才能与控制者背靠.。

1- Model.php

<?php
class Model
{
    private $con=null;
    private $r=null;
   function connect()
   {    
   $host="localhost";
   $db="mis";
   $user="root";
   $pass="";
   $this->con=mysqli_connect($host,$user,$pass) or die(mysqli_error());
    if(!$this->con){
        echo die(mysqli_error());
    }
    else mysqli_select_db($this->con,$db);
   }
    function select_all()
    {
        $this->connect();
        $sql="select * from customers";
        $this->r=mysqli_query($this->con,$sql) or die(mysqli_error());
        return $this->r;
    }
    function display_all()
    {
        $i=0;
        echo "aaaaaaaaaa";
        $this->r=$this->select_all();
        while($q=mysqli_fetch_array($this->r))
        {
            $i++;
            echo $i."-Id:".$q[ id ]."</br>";
            echo $i."-Name:".$q[ name ]."</br>";
            echo $i."-Phone:".$q[ phone ]."</br></br>";         
        }
    }
}
?>
2. Controller: There may may be many controllers.
<?php
class Customers extends Model
{


    function select_all1()
    {
        //echo "aaaaaaa";
        $this->display_all();
    }

}
?>
3. View: There may be many views
<?php
include("model.php");
include("customers.php");
?>
<html>
<head><title>Customers</title></head>
<body>
<?php
$c=new Customers();
echo $c->select_all1();
?>
</body>
</html>




相关问题
Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

定值美元

如何确认来自正确来源的数字。

Generating a drop down list of timezones with PHP

Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

How does php cast boolean variables?

How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...

热门标签