Blogger Information
Blog 24
fans 4
comment 0
visits 20116
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
1月16日 学号:478291 接口、抽象类、命名空间与MVC
Lin__
Original
723 people have browsed it

接口

  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. }

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:完成的非常认真, 基本概念清楚
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post