批改状态:合格
老师批语:这只是mvc的最基本的流程, 离成品还远着呢, 不要着急, 第一步迈出来了
接口可以理解为,它给出了一个或者多个由它命名的类方法/函数,这些方法是共有的,由一个或者多个类去实现它所定义(给出)的方法/函数,注意实现它的时候需要把里面所有定义的方法/函数都实现。
命名为interface
例
<?php//创建一个接口interface iDemo{//创建里面的方法/函数public function getName();public function getInfo();}
如果要实现一个类,需要用到命令implements
例
<?php//创建一个接口interface iDemo{//创建里面的方法/函数public function getName();public function getInfo();}//创建一个类来实现接口里面的方法//使用implements创建class Demo implements iDemo{protected $name;protected $info;public function __construct($name,$info){$this->name = $name;$this->info = $info;}// 实现接口定义的两个方法/函数public function getName(){return '我的名字叫:'.$this->name;}public function getInfo(){return '我喜欢:'.$this->info;}}$obj =new Demo('李雷','韩梅梅');echo $obj->getName();echo '<br>';echo $obj->getInfo();
图1
图2,接口里面的方法必须全部实现,如果有一个没实现就会报错(把第二个方法改名后,就会报错)
类中某一个或者多个方法没有实现(只是声明),就可以把这个类定义为抽象类。定义为抽象类以后,它不能被实例化(不能被访问),只能当做父类,被子类继承,继承的子类需要把抽象类里面没有实现的方法全部实现。
命令abstract
例
<?php//如果是一个抽象类,类名也需要添加abstract命令abstract class Demo1{public function getName(){return '李雷';}//没有实现的方法/函数,要添加abstract转为抽象类public abstract function getInfo();}//创建一个子类,继承父类class Sub extends Demo1{public $name;public $info;function __construct($name,$info){$this->name = $name;$this->info = $info;}public function getName(){return '我是:'.$this->name;}//这里实现父类没有实现的方法/函数public function getInfo(){echo '我喜欢:'. $this->info;}}$obj = new Sub('韩梅梅','看书');echo $obj->getName();echo '<br>';echo $obj->getInfo();
图
图2(如果不用子类,直接访问抽象类,会报错)
命名空间可以理解为一台电脑,里面有个两个文件夹,两个文件夹的命名互不相干,A的文件夹里面的文件可以和B的文件夹里面的文件名字相同,例如C盘里面有A和B两个文件夹,A和B两个文件夹下面都有一个名字相同的D文件夹,他们是互相不干扰的
命名空间它只限制,或者说作用在“函数,常量,类/接口”
例
<?php//设置一个命名空间namespace One;const PATH = '/article';class Demo{}//设置第二个命名空间namespace Two;const PATH = '/setup';//常量PATH重名了,但是它们在两个不同的命名空间里面,所以互相不影响echo '输出命名空间Two里面的常量PATH:'.PATH;echo '<br>';echo '输出命名空间One里面的常量PATH:'.\One\PATH;
图
MVC:它包括,控制器(Controller)PHP文件,模型(Model)PHP文件,视图(View)HTML文件
控制器(Controller):控制器的作用是调用模型(Model)和视图(View),将模型产生的数据传递给视图,并让视图去显示(大部分情况也有隔绝视图直接访问模型的作用)
模型(Model):最重要的是数据模型,它会把获取到的数据保存,处理过后最终返回给数据库
视图(View):主要作用是美化模型的输出结果,以及数据的采集
用MVC的概念简单创建一个表格
模型(Model)
<?phpnamespace mvc;//创建一个简单的数据class Model{public function getData(){return [['id' => '1', 'name' => '苹果手机', 'model' => 'Apple11', 'price' => '8000'],['id' => '2', 'name' => '华为手机', 'model' => 'Mate30', 'price' => '5000'],['id' => '3', 'name' => '小米手机', 'model' => 'redmi', 'price' => '2000'],];}}
视图(View)
<?phpnamespace mvc;class View{public function fetch($data){$table = '<table>';$table.= '<caption>物品详情</caption>';$table.= '<tr><td>ID</td><td>手机名字</td><td>型号</td><td>单价</td></tr>';foreach($data as $good){$table.= '<tr><td>'.$good['id'].'</td><td>'.$good['name'].'</td><td>'.$good['model'].'</td><td>'.$good['price'].'</td></tr>';}$table.='</table>';return $table;}}echo '<style type="text/css">table {border-collapse:collapse;border:1px solid;width:400px;height:150px;text-align:center;}caption {font-size:1.2rem;background:lightblue;border:1px solid;}td{border:1px solid;}</style>';
控制器(Controller)
<?phpnamespace mvc;// 这里引用的时候一定要注意,引用在命名空间的下方,不然会出现命名空间冲突require 'Model.php';require 'view.php';class Controller2{//添加模型对象成员private $model;//添加视图对象成员private $view;//创建构造方法,传参模型实例化与视图实例化public function __construct($model,$view){$this->model = $model;$this->view = $view;}public function index(){//获取Model数据$data = $this->model->getData();//获取View数据return $this->view->fetch($data);}}//实例化Model$model = new Model;//实例化View$view = new View;$controller = new Controller2($model,$view);echo $controller->index();// 把Model获取方式,与View获取方式,放在外部,然后传参进去。// 如果控制器里面有多个方法/函数,可以把模型数据,与视图数据,传递给构造方法,以达到数据共享
图
学习到现在感觉离自己做出一个成品越来越近了,希望在不久的将来,自己不再是一个小白,也能自己独立开发一个小站点!!!加油加油!!!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号