1. 文件包含的本质与作用域,实例演示
概括:
//1.文件包含的本质:将目录文件复制到当前位置
//2.被包含文件共享作用域
//用include和require引入文件
//可以在当前文件调用引入文件的内容
include(想要引入的文件绝对路径);
require(想要引入的文件绝对路径);
演示:
2. 类相关实例演示
概括:
类
一、常规成员
1.属性:可被其他方法共享
2.方法
方法分为:自定义方法和魔术方法(由系统调用,用户不能直接调用;
访问限制符
1.private:私有的,仅在当前类使用
2.protected:继承,可在本类或者子类使用,不对外公开
3.public:公开的,都可以访问(默认值)
二、静态成员
1.static:静态属性、静态方法
2.与类实例无关,最好不用$this调用
类的扩展:抽象类、最终类
1.protected:受保护的/可继承
2.extends:扩展/继承
3.parent:父类引出
4.abstract:抽象
5.final:最终
接口:大号抽象类,使用关键字interface定义,
使用关键字implements继承。
代码实例:
<?php
//常规
class User
{
private $name;
protected $age;
public $email;
public function getName(){
return $this->name;
}
public function __construct(string $name){
$this->name = $name;
}
}
// $user = new User('zhu');
// echo $user->getName();
//静态
class User1{
private static $name = '静态';
public static function getName(){
return self::$name;
}
}
// echo User1::getName();
//类的扩展:抽象类/最终类
class Preson{
protected $name;
private $id;
public function __construct(string $name){
$this->name = $name;
}
protected function getInfo(){
return $this->name;
}
}
//Stu类 继承Preson类:关键字extends
class Stu extends Preson{
// 1.属性扩展
private $lesson;
private $score;
// 2.方法扩展和重写
public function __construct($name,$lesson,$score){
parent::__construct($name);
$this->lesson =$lesson;
$this->score =$score;
}
function getInfo(){
return parent::getInfo() . $this->lesson . $this->score;
}
}
// $stu = new Stu('name','课程哦','88分');
// echo $stu->getInfo();
//abstract:抽象类只能继承
abstract class Demo{
}
class Demo1 extends Demo{
}
// echo 'Demo1的父类是' . get_parent_class(new Demo1);
abstract class Demo2{
//抽象方法:只有方法名,没有具体实现
abstract protected function hello($name);
}
class Demo3 extends Demo2{
//必须实现父类中的抽象成员
public function hello($name){
return 'Hello' . $name;
}
}
// echo call_user_func([new Demo3,'hello'],'猪');
//最终类final: 不能被继承,只能实例使用
final class Demo5{
}
//接口:大号抽象类
interface iUser{
//1.类常量
const NATION = 'CHIAN';
// 2.必须是抽象,必须是public
public function m1();
public function m2();
}
//接口不能直接用,要用一个类实现
// 1.用普通类实现,必须将接口所有抽象方法实现
class Test implements iUser{
public function m1(){
return self::NATION;
}
public function m2(){}
}
echo call_user_func([new Test,'m1']);
// 2.用抽象类实现,允许部分实现
abstract class Test1 implements iUser{
public function m1(){
}
}
//可通过接口实现多继承
interface A{}
interface B{}
interface C{}
class Test3 implements A,B,C{}