博客列表 >1月16日 学号:478291 接口、抽象类、命名空间与MVC

1月16日 学号:478291 接口、抽象类、命名空间与MVC

Lin__
Lin__原创
2020年02月09日 22:12:31726浏览

接口

  1. interface 接口名{
  2. const 常量名=常量值;//常量成员
  3. function 方法名();//方法
  4. }
  5. class 类名 implements 接口名,{
  6. function 方法名(){
  7. //实现接口中的所有方法
  8. }
  9. }
  • 接口通过interface关键字声明
  • 接口中只能声明常量和未实现的方法(只有方法体没有具体的实现),并且访问权限必须是public
  • 接口不能进行实例化,只能通过类实现,一个类可以实现多个接口使用,隔开
  • 一个类实现接口就必须将实现接口中声明的所有方法

  • 示例:

  1. <?php
  2. interface IPerson{
  3. public function say();
  4. public function money();
  5. }
  6. class Member implements IPerson{
  7. public function say(){
  8. echo '我是一名工人';
  9. }
  10. public function money(){
  11. echo 5500;
  12. }
  13. }

抽象类

  1. abstract class 抽象类名{
  2. 权限修饰符 $属性名;//定义类属性
  3. 权限修饰符 function 方法名([参数]){}//定义类方法
  4. abstract function 抽象方法名();//定义抽象方法
  5. }
  6. class 类名 extends 抽象类名{
  7. function 抽象方法名(){}
  8. }
  • 抽象类使用abstract关键字声明
  • 只能作为父类被继承,不能实例化使用
  • 抽象类可以包含普通成员,但必须包含一个抽象方法
  • 抽象类中的抽象方法必须被子类实现
  • 示例:
  1. <?php
  2. abstract class One{
  3. private $name;
  4. function __contruct($name){
  5. $this->name=$name;
  6. }
  7. public function getName(){
  8. echo $this->name;
  9. }
  10. abstract function say();
  11. }
  12. class Two extends One{
  13. function say(){
  14. echo '我的名字叫:Lin';
  15. }
  16. }
  17. $two=new Two();
  18. $two->say();

静态成员

  1. class 类名{
  2. 权限修饰符 static $属性名;//定义静态属性
  3. 权限修饰符 static function 方法名(){//定义静态方法
  4. self::$属性名;//在类中访问自身的静态属性
  5. self::方法名();//在类中访问自身的静态方法
  6. }
  7. }
  8. 类名::$属性名;//访问类的静态属性
  9. 类名::方法名();//访问类的静态方法
  • 添加static关键字,就可以将成员定义为静态成员
  • 在静态方法中只能访问静态成员
  • 示例:
  1. <?php
  2. class Demo{
  3. private static $num=1;
  4. public static function change(){
  5. echo "您是第".self::$num."个访问本站的访客";
  6. self::$num++;
  7. }
  8. }
  9. Demo::change();
  10. echo '<hr />';
  11. Demo::change();

命名空间

  1. //创建命名空间
  2. namespace 空间名称;
  3. class 类名{}
  4. function 函数名(){}
  5. namespace 空间名称{
  6. class 类名{}
  7. function 函数名(){}
  8. }
  9. namespace{}//全局命名空间
  10. //访问命名空间下的类或函数
  11. \命名空间\类名;
  12. \命名空间\函数名();
  • 命名空间使用namespace关键字定义
  • 命名空间必须写在第一行,之前不能有任何代码
  • 当前的命名空间找不到某个函数或常量时,会自动到全局的命名空间进行查找
  1. <?php
  2. namespace One{
  3. function A(){
  4. echo 'This is One';
  5. }
  6. }
  7. namespace Two{
  8. function A(){
  9. echo 'This is Two';
  10. }
  11. }
  12. namespace{
  13. \One\A();
  14. }

MVC

MVC分为:Model(模型),负责操作数据表数据;Controller(控制),负责响应用户请求、准备数据;View(视图),负责渲染数据,通过HTML方式呈现给用户

Controller.php

  1. <?php
  2. namespace mvc;
  3. require_once 'Model.php';
  4. require_once 'View.php';
  5. class Controller{
  6. private $view;
  7. private $model;
  8. public function __construct($view,$model){
  9. $this->view=$view;
  10. $this->model=$model;
  11. }
  12. public function show(){
  13. $data=$this->model->getData();
  14. $this->view->showTable($data);
  15. }
  16. }
  17. $model=new Model();
  18. $view=new View();
  19. $controller=new Controller($view,$model);
  20. $controller->show();

Model.php

  1. <?php
  2. namespace mvc;
  3. class Model{
  4. public function getData(){
  5. $data=[
  6. ['id'=>1,'name'=>'首页','url'=>'index.php'],
  7. ['id'=>2,'name'=>'最新课程','url'=>'list.php?cid=0'],
  8. ['id'=>3,'name'=>'JAVA','url'=>'list.php?cid=1'],
  9. ['id'=>4,'name'=>'PHP','url'=>'list.php?cid=2']
  10. ];
  11. return $data;
  12. }
  13. }

VIew.php

  1. <?php
  2. namespace mvc;
  3. class View{
  4. function showTable($data){
  5. echo '<table border="1">';
  6. echo '<tr><td>ID</td><td>NAME</td><td>URL</td></tr>';
  7. if(count($data)>0){
  8. foreach($data as $item){
  9. echo '<tr><td>'.$item['id'].'</td><td>'.$item['name'].'</td><td>'.$item['url'].'</td></tr>';
  10. }
  11. }else{
  12. echo '<tr><td colspan="3">暂无数据</td></tr>';
  13. }
  14. echo '</table>';
  15. }
  16. }

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议