Blogger Information
Blog 30
fans 0
comment 2
visits 29251
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP 类与实例基础
司马青衫
Original
1013 people have browsed it

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();

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:正确
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post