笔记
引用类
include __DIR__."/test.php"; //软加载,报错不会终止后续代码 require __DIR__."/test.php"; //硬加载,报错后立马终止代码继续输出
类方法
class Test_demo{ } $test = new Test_demo; //创建新类并赋予$test变量 $o = get_class($test); //获取变量的类名称 $a = "test_demo"; $class = ucfirst($a); //将字符串首字母转换为大写 $test1 = new $class; //在此代码中 $class将$a的字符串给转为正确的类名,所以可以创建新类 实现动态加载 var_dump($test1 instanceof Test_demo); // instanceof检查变量是否属于这个类,不属于将返回FALSE 属于返回TRUE
类方法 ---参数、函数、私有、公有
class User1 { // 常规成员 // 1. 属性 // 语法: 访问限制符 类成员声明 // 声明为私有, 实现封装 private $username; // 2. 方法 // 2.1 自定义方法: 用户自己声明自己调用 public function getUsername() { // -> 对象成员访问符 // 当前实例的引用, $this 与实例绑定的 return $this->username; } // 2.2 魔术方法: 由系统来调用,用户不能直接调用 // 构造方法: 实例化进自动调用,创建该类时要提供跟该方法所需变量一样类型的变量 public function __construct(string $username) { $this->username = $username; } } $a = new User1("YingXI"); //创建后 类中私有变量$username将会赋值为"YingXI" echo $a->getUsername(); //输出为 YingXI
类的扩展/抽象/最终
1. protected: 受保护/可继承
2. extends: 扩展/继承
3. parent: 父类引用
4. abstract: 抽象
5. final: 最终类// 父类, 基类, 超类 class Person { // protected: 成员可继承,可以在子类中使用 protected $name; // private: 私有, 仅限当前类, 子类,外部都不可见 private $id = 12345; // public: 类中,子类, 类外都可见 public function __construct($name) { $this->name = $name; } // getInfo::protected // 比protected再严格的是 private, 比它更宽松的是: public protected function getInfo() { return $this->name; } } // 学生类 // extends: Stu这个类,扩展了Person类的功能 class Stu extends Person { // 1. 属性扩展 private $lesson; private $score; // 2. 方法扩展/重写 public function __construct($name, $lesson, $score) { // 引用了父类的构造方法 // parent: 父类引用 Person parent::__construct($name); $this->lesson = $lesson; $this->score = $score; } public function getInfo() { // $this->name // return $this->name . "同学, ($this->lesson : $this->score 分)"; return parent::getInfo() . "同学, ($this->lesson : $this->score 分)"; } } $stu = new Stu('小狗', 'PHP', 88); echo $stu->getInfo(); $person = new Person('小猪');
接口方法
- const:定义常量
- interface:声明接口
implements: 实现接口
interface test1{ const A1 = "I am YingXI"; //定义一个A1常量 public function sethello($name); //抽象方法,不提供方法实现 } class test implements test1{ public function sethello($name){ return "Hello ".$name." ".test1::A1; } } $a = new test; echo($a->sethello("Mary")); //输出结果为 Hello Marry I am YingXI echo(test::sethello("Tom")); //输出结果为 Hello Tom I am YingXI