一、自动加载技术
class Loader{
public static function load($className)
{
$path = $className.'.php';
if (file_exists($path)){
require $path;
}else{
echo $path . '不存在,请检查~~';
}
}
}
工作类 index.php
require 'Loader.php';
spl_autoload_register(array('Loader','load'));
use admin\Car;
class Demo{
function show(Car $car){
return $car->drive();
}
}
$car = new Car();
$demo = new Demo();
echo $demo->show($car);
二、抽象类
abstract: 定义抽象方法/抽象类
类中只要有一个抽象方法, 该类就应该声明为抽象类
抽象类只能被继承,不能实例化,并且抽象方法必须在子类实现
abstract class AbstractClass
{
public $name;
public function __construct($name)
{
$this->name = $name;
}
abstract protected function hello();
abstract protected function say();
public function test(){
return '这里是普通方法';
}
}
class ChildClass extends AbstractClass {
public function hello()
{
return 'hello,'.$this->name;
}
public function say()
{
return 'say,'.$this->name;
}
}
$obj = new ChildClass('孙悟空');
echo $obj->test(); //这里是普通方法
echo $obj->hello(); //hello,孙悟空
echo $obj->say(); //say,孙悟空
三、接口
interface: 指定某个类必须实现的方法,但不需要定义方法的具体实现过程
接口中仅允许出现: 方法与类常量
接口的方法可见性必须是: public
接口的方法体必须是空的
接口是类的代码模板, 可以像类一样有父子继承关系,例如父接口, 子接口
//接口一
interface Idemo1
{
const SITE_NAME = 'www.php.cn';
public function show();
public function hide();
}
//接口二
interface Idemo2
{
public function increase();
public function decrease();
}
//工作类
class Demo implements Idemo1,Idemo2{
public function show()
{
return '显示方法'.Idemo1::SITE_NAME;
}
public function hide()
{
return '影藏方法'.Idemo1::SITE_NAME;
}
public function increase()
{
return '增加方法'.Idemo1::SITE_NAME;
}
public function decrease()
{
return '减少方法'.Idemo1::SITE_NAME;
}
}
$obj = new Demo();
$obj->show();
$obj->hide();
$obj->increase();
$obj->decrease();
手写:
课程总结:
1、文件自动加载使用函数spl_autoload_register
2、抽象类的抽象方法在子类必须实现,抽象类可以有普通方法
3、接口类似抽象方法,接口的方法也必须在实现类实现,接口方法也没有方法体,可以有常量。
THE END !