PHP面向对象之接口
interface iDemo
{
public function getName();
public function getAge();
}
class Demo1 implements iDemo
{
// 增加自有成员
public $name;
protected $age;
// 构造函数:初始化属性值
public function __construct($name,$age)
{
$this->name=$name;
$this->age=$age;
}
// 实现接口的类,需要将接口中的所有方法实现
public function getName()
{
return "我是:".$this->name;
}
public function getAge()
{
return "我的年龄:".$this->age;
}
}
// 实例化类
$obj=new Demo1("齐齐",18);
echo $obj->getName();
echo "<br>";
echo $obj->getage();
运行结果
PHP面向对象之抽象类
// 抽象类用关键字abstract声明,不能实例化,只能做 为父类被继承
abstract class Demo2
{
// 增加自有成员
public $name;
protected $age;
// 构造函数:初始化属性值
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
// 实现接口的类,需要将接口中的所有方法实现
public function getName()
{
return "我是:" . $this->name;
}
abstract public function getInfo();
}
class son extends Demo2
{
// 继承抽象类,子类必须实现父类中没有实现方法
public function getInfo()
{
return "我是:".$this->times."的".$this->name." 年龄:" . $this->age;
}
// 子类构造方法
public function __construct($name, $age,$times)
{
parent::__construct($name, $age);
$this->times=$times;
}
}
// 实例化类
$obj = new son("齐齐", 18,"第十期");
echo $obj->getInfo();
运行结果
PHP面向对象之静态成员
// 静态成员
class Demo3
{
// 静态属性
static $name="齐齐";
// 非静态成员
public $age=19;
// 静态方法
static function getInfo()
{
// return $this->name;
return self::$name;
// return $this->age;
}
}
// 实例化类
$obj=new Demo3();
// echo $obj->getInfo;
echo Demo3::getInfo();
echo "<br>";
echo $obj->age;
运行结果
PHP之MVC框架架构
模型类
namespace mvc;
// 模型类
class Model{
public function getData()
{
return [
['id'=>1,'food'=>"火锅",'rate'=>"一个月一次",'money'=>120],
['id'=>2,'food'=>"串串",'rate'=>"一周一次",'money'=>400],
['id'=>3,'food'=>"车厘子",'rate'=>"偶尔",'money'=>40],
['id'=>4,'food'=>"火龙果",'rate'=>"经常",'money'=>80],
];
}
}
视图类
namespace mvc;
// 视图类
class View{
public function apply($date)
{
$result.='<h3>我喜欢吃的食物</h3>';
$result.='<table>';
$result.='<tr><td>序列号</td><td>食品名称</td><td>频率</td><td>花费</td></tr>';
foreach($date as $food){
$result.='<tr><td>'.$food['id'].'</td><td>'.$food['food'].'</td><td>'.$food['rate'].'</td><td>'.$food['money'].'</td></tr>';
}
$result.='</table>';
return $result;
}
}
控制器类
namespace mvc;
// 载入模型类
require "Model.php";
// 载入视图类
require "View.php";
// 控制器类
class Controller{
// 公共属性
private $model;
private $view;
// 构造方法
public function __construct($model,$view)
{
$this->model=$model;
$this->view=$view;
}
public function show()
{
$data=$this->model->getData();
return $this->view->apply($data);
}
}
$model=new Model;
$view=new View;
// 实例化控制类
$controller=new Controller($model,$view);
// 访问类方法
echo $controller->show();
echo '<style>
h3{text-align:center}
table {margin:auto;border-collapse: collapse; border: 1px solid; width: 500px;height: 350px;text-align:center}
td,th {border: 1px solid}
</style>';
运行结果
总结
1.接口面向对象编程的多态的重要手段。创建接口使用关键字interface
,。接口的方法只有声明,没有实现。类在实现接口时。需要将没有实现的方法全部实现。
2.当一个类中,有没有实现的方法。使用关键字abstract
声明为抽象方法,此时的类变成一个抽象类,类名前同样需要加上关键字abstract
。不能被实例化,只能做父类来使用。
3.静态成员,不属于对象,属于类。在类中用self::
,类外类名::
访问。不能像普通成员一样,直接用类实例$this
访问。命名空间如同文件夹目录,让一些同名的函数方法类区分开。使用命名空间,防止重名。
4.MVC框架是类和命名空间综合使用,实现数据到页面的渲染。