接口
interface 接口名{
const 常量名=常量值;//常量成员
function 方法名();//方法
}
class 类名 implements 接口名,{
function 方法名(){
//实现接口中的所有方法
}
}
- 接口通过
interface
关键字声明 - 接口中只能声明常量和未实现的方法(只有方法体没有具体的实现),并且访问权限必须是
public
- 接口不能进行实例化,只能通过类实现,一个类可以实现多个接口使用
,
隔开 一个类实现接口就必须将实现接口中声明的所有方法
示例:
<?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 抽象方法名(){}
}
- 抽象类使用
abstract
关键字声明 - 只能作为父类被继承,不能实例化使用
- 抽象类可以包含普通成员,但必须包含一个抽象方法
- 抽象类中的抽象方法必须被子类实现
- 示例:
<?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::方法名();//在类中访问自身的静态方法
}
}
类名::$属性名;//访问类的静态属性
类名::方法名();//访问类的静态方法
- 添加
static
关键字,就可以将成员定义为静态成员 - 在静态方法中只能访问静态成员
- 示例:
<?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{}//全局命名空间
//访问命名空间下的类或函数
\命名空间\类名;
\命名空间\函数名();
- 命名空间使用
namespace
关键字定义 - 命名空间必须写在第一行,之前不能有任何代码
- 当前的命名空间找不到某个函数或常量时,会自动到全局的命名空间进行查找
<?php
namespace One{
function A(){
echo 'This is One';
}
}
namespace Two{
function A(){
echo 'This is Two';
}
}
namespace{
\One\A();
}
MVC
MVC分为:Model(模型),负责操作数据表数据;Controller(控制),负责响应用户请求、准备数据;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>';
}
}