一、接口
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>';
}
}