笔记

  • 引用类

    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
     
版权声明 😋 -博客名称: YingXI - 小破站
😶 - 本文作者:YingXI
🤓 -本文链接: https://www.yingxiya.com/archives/6.html
🤔 -内容来源: 部分内容可能来源于公共网络,仅供学习交流,如有侵权,请联系博主进行核实删除。
😶 -转载说明: 请勿用于商业用途,转载请注明出处!

最后修改:2024 年 09 月 27 日
如果觉得我的文章对你有用,请随意赞赏