PHP接口、抽象类、命名空间与MVC

一、接口

interface 接口名{
    const 常量名=常量值;//常量成员
    function 方法名();//方法
}
class 类名 implements 接口名,{
    function 方法名(){
        //实现接口中的所有方法
    }
}

1.接口通过interface关键字声明
2.接口中只能声明常量和未实现的方法(只有方法体没有具体的实现),并且访问权限必须是public
3.接口不能进行实例化,只能通过类实现,一个类可以实现多个接口使用,隔开
4.一个类实现接口就必须将实现接口中声明的所有方法

5.示例:

<?php
interface IPerson{
    public function say();
    public function money();
}
class Member implements IPerson{
    public function say(){
        echo '我是一名工人';
    }
    public function money(){
        echo 5500;
    }
}

二、抽象类

abstract class 抽象类名{
    权限修饰符 $属性名;//定义类属性
    权限修饰符 function 方法名([参数]){}//定义类方法
    abstract function 抽象方法名();//定义抽象方法
}
class 类名 extends 抽象类名{
    function 抽象方法名(){}
}

1.抽象类使用abstract关键字声明
2.只能作为父类被继承,不能实例化使用
3.抽象类可以包含普通成员,但必须包含一个抽象方法
4.抽象类中的抽象方法必须被子类实现
5.示例:

<?php
abstract class One{
    private $name;
    function __contruct($name){
        $this->name=$name;
    }
    public function getName(){
        echo $this->name;
    }
    abstract function say();
}
class Two extends One{
    function say(){
        echo '我的名字叫:Lin';
    }
}
$two=new Two();
$two->say();

三、静态成员

class 类名{
    权限修饰符 static $属性名;//定义静态属性
    权限修饰符 static function 方法名(){//定义静态方法
        self::$属性名;//在类中访问自身的静态属性
        self::方法名();//在类中访问自身的静态方法
    }
}
类名::$属性名;//访问类的静态属性
类名::方法名();//访问类的静态方法

1.添加static关键字,就可以将成员定义为静态成员
2.在静态方法中只能访问静态成员
3.示例:

<?php
class Demo{
    private static $num=1;
    public static function change(){
        echo "您是第".self::$num."个访问本站的访客";
        self::$num++;
    }
}
Demo::change();
echo '<hr />';
Demo::change();

四、命名空间

//创建命名空间
namespace 空间名称;
class 类名{}
function 函数名(){}namespace 空间名称{
    class 类名{}
    function 函数名(){}
}
namespace{}//全局命名空间
//访问命名空间下的类或函数
\命名空间\类名;
\命名空间\函数名();

1.命名空间使用namespace关键字定义
2.命名空间必须写在第一行,之前不能有任何代码
3.当前的命名空间找不到某个函数或常量时,会自动到全局的命名空间进行查找

<?php
namespace One{
    function A(){
        echo 'This is One';
    }
}
namespace Two{
    function A(){
        echo 'This is Two';
    }
}
namespace{
    \One\A();
}

五、MVC

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

<?php
namespace mvc;
require_once 'Model.php';
require_once 'View.php';
class Controller{
    private $view;
    private $model;
    public function __construct($view,$model){
        $this->view=$view;
        $this->model=$model;
    }
    public function show(){
        $data=$this->model->getData();
        $this->view->showTable($data);
    }
}
$model=new Model();
$view=new View();
$controller=new Controller($view,$model);
$controller->show();

Model.php

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

VIew.php

<?php
namespace mvc;
class View{
    function showTable($data){
        echo '<table border="1">';
        echo '<tr><td>ID</td><td>NAME</td><td>URL</td></tr>';
        if(count($data)>0){
            foreach($data as $item){
                echo '<tr><td>'.$item['id'].'</td><td>'.$item['name'].'</td><td>'.$item['url'].'</td></tr>';
            }
        }else{
            echo '<tr><td colspan="3">暂无数据</td></tr>';
        }
        echo '</table>';
    } 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值