博客列表 >PHP 类与实例基础

PHP 类与实例基础

司马青衫
司马青衫原创
2020年07月25日 22:05:501019浏览

PHP 类与实例、类属性与类方法、类成员的访问控制、类的扩展以及扩展的方式

  • 类的声明:使用class关键字声明类
    • 类中主要分成类属性与类方法两种
    • 类属性分为静态属性与非静态属性
      • 静态属性使用static声明,使用::访问
      • 非静态属性使用->访问
    • 类方法也可分为静态方法与非静态方法
      • 也使用static关键字声明
      • 建议只在静态方法中访问静态属性
    • 类中属性与方法使用关键字有:
      • public:公有成员,在类内部、外部以及子类中均可使用
      • private:私有成员,仅在类内部使用
      • protected:受保护成员,仅在类内部与子类中可用
      • static:声明为静态属性或静态方法,不依赖实例
      • self:代表类自己,可用于访问类属性
      • $this:代表类的虚拟对象,可用于访问非静态的类属性
      • extends:继承父类的方法与属性
      • parent:指向父类的指针,用在子类中
      • final:如果一个类或方法被声明为final,则该类或方法无法继承
  • 类的实例化:使用new关键字实例化一个类对象
  • 动态类:将类名称放在一个变量中

1.类的声明与实例化

  1. <?php
  2. //声明一个Info类
  3. class Info{}
  4. //调用 实例化
  5. $name = new Info();
  6. var_dump($name);

2.类属性与类方法

  1. <?php
  2. //声明一个Info类
  3. class Info
  4. {
  5. //属性
  6. public $name = '访问内部属性<br>';
  7. public static $gender = '访问静态属性<br>';
  8. //方法 访问内部属性
  9. public function retName(){
  10. return $this->name;
  11. }
  12. //静态方法 不依赖实例 可以用类直接调用
  13. public static function retGender(){
  14. return self::$gender;
  15. }
  16. //访问外部属性 使用依赖注入
  17. public function extName($name){
  18. return $name;
  19. }
  20. //访问外部方法 使用依赖注入
  21. public function extOper($fun){
  22. return $fun();
  23. }
  24. }
  25. //调用 实例化
  26. $userInfo = new Info();
  27. echo $userInfo->retName();
  28. echo $userInfo->retGender();
  29. $name = '访问外部属性<br>';
  30. echo $userInfo->extName($name);
  31. //使用匿名函数
  32. $fun = function(){
  33. return '访问外部方法<br>';
  34. };
  35. echo $userInfo->extOper($fun);

3.类成员的访问控制

  1. <?php
  2. //声明一个Info类
  3. class Info
  4. {
  5. //属性
  6. public $name = '张三';
  7. private $gender = '男';
  8. protected $age = 20;
  9. //方法
  10. //在内部访问以上三种属性
  11. public function retInfo(){
  12. return "姓名:".$this->name.",性别:".$this->gender.";年龄:".$this->age."<br>";
  13. }
  14. }
  15. //声明一个子类
  16. class vInfo extends Info
  17. {
  18. //在子类中访问public与protected属性
  19. public function retvInfo(){
  20. return "姓名:".$this->name.";年龄:".$this->age."<br>";
  21. }
  22. }
  23. //调用 实例化
  24. $userInfo = new Info();
  25. //在外部访问public属性
  26. echo $userInfo->name."<br>";
  27. echo $userInfo->retInfo();
  28. $uservInfo = new vInfo();
  29. echo $uservInfo->retvInfo();

4.类的扩展以及扩展的方式

  1. <?php
  2. //声明一个Info类
  3. class Info
  4. {
  5. //属性
  6. public $name = '张三';
  7. //方法
  8. public function retName(){
  9. return $this->name;
  10. }
  11. }
  12. //声明一个子类即扩展类
  13. class vInfo extends Info
  14. {
  15. //属性扩展
  16. public $age = 20;
  17. //方法扩展 使用parent关键字
  18. public function retvName(){
  19. return parent::retName()." ".$this->age."岁"."<br>";
  20. }
  21. //方法重写
  22. public function retName(){
  23. return "姓名:".$this->name.";年龄:".$this->age."<br>";
  24. }
  25. }
  26. //调用 实例化
  27. $userInfo = new vInfo();
  28. echo $userInfo->retvName();
  29. $uservInfo = new vInfo();
  30. echo $uservInfo->retName();

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议