找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 978|回复: 0

详解成员属性与成员方法

[复制链接]

304

主题

42

回帖

1338

积分

管理员

积分
1338
发表于 2021-4-21 23:16:44 | 显示全部楼层 |阅读模式
1、属性
  1. <?php

  2. /*
  3.         成员属性的特点
  4. */

  5. define('CEO', '杰哥');


  6. $x = 200;

  7. class Simple
  8. {
  9.         // 1. 可以有默认值
  10.         public $a = 100;

  11.         // 2. 默认值不能是变量
  12.         // public $b = $x;

  13.         // 3. 可以运算
  14.         public $c = 200 + 123;

  15.         // 4. 不能重复定义
  16.         // public $c = 123;

  17.         // 5. Constant expression contains invalid operations
  18.         // public $d = mt_rand(1, 300);

  19.         // 6. 支持常量
  20.         public $e = CEO;

  21. }
  22. echo '<pre>';
  23.         print_r(new Simple());
  24. echo '</pre>';
复制代码
2、方法
  1. <?php

  2. /*
  3.         成员方法的特点

  4.                 1. 不调用不执行
  5.                 2. 调用格式: $obj->方法名();
  6.                 3. 哪里调用返回哪里
  7.                 4. 命名规则,与变量命名一致
  8.                 5. 类名、方法名不区分大小写
  9.                 6. 不能重复定义
  10.                 7. 参数
  11.                         声明参数的时候,也可以定义接收类型
  12.                         参数个数,没有限制
  13.                         参数的类型,没有限制
  14.                         参数的位置,一一对应

  15.                 8. 返回值
  16.                         在类的方法里面,可以声明返回值类型
  17.                         执行了 return ,后面的语句不在执行

  18.                 注意:
  19.                         声明了参数类型或者返回值的类型,PHP会尝试转换该类型,如果无法转换,则报错。
  20. */

  21. class Simple
  22. {
  23.         public function test(string $str) : string
  24.         {
  25.                 $s = 'Hello ' . $str . '<br>';
  26.                 return 123;
  27.         }

  28.         public function foo(int $num) : int
  29.         {
  30.                 return $num + 1;
  31.         }

  32.         public function bar(int $x = 8): bool
  33.         {
  34.                 if ($x % 2 == 0) {
  35.                         return true;
  36.                 }
  37.                 return false;
  38.         }
  39. }

  40. $obj = new Simple();
  41. $str = $obj->test('jack');
  42. var_dump($str);

  43. $num = $obj->foo(2228);
  44. var_dump($num);

  45. $res = $obj->bar();
  46. var_dump($res);
复制代码
3、声明了返回值是对象
  1. <?php

  2. /*
  3.         成员方法的特点

  4.                 1. 不调用不执行
  5.                 2. 调用格式: $obj->方法名();
  6.                 3. 哪里调用返回哪里
  7.                 4. 命名规则,与变量命名一致
  8.                 5. 类名、方法名不区分大小写
  9.                 6. 不能重复定义
  10.                 7. 参数
  11.                         声明参数的时候,也可以定义接收类型
  12.                         参数个数,没有限制
  13.                         参数的类型,没有限制
  14.                         参数的位置,一一对应

  15.                 8. 返回值
  16.                         在类的方法里面,可以声明返回值类型
  17.                         执行了 return ,后面的语句不在执行

  18.                 注意:
  19.                         声明了参数类型或者返回值的类型,PHP会尝试转换该类型,如果无法转换,则报错。
  20. */

  21. class Person
  22. {

  23. }

  24. class Simple
  25. {
  26.         public function test(int $age) : Person
  27.         {
  28.                 return new Person();
  29.         }
  30. }

  31. $obj = new Simple();
  32. $o = $obj->test(18);
  33. echo '<pre>';
  34.         print_r($o);
  35. echo '</pre>';
复制代码
4、属性是桥梁
  1. <?php

  2. // 属性,是各个方法传递数据的桥梁!
  3. // 不同点: 成员属性的作用范围是在整个类!在任意一个方法都可以直接访问、修改成员属性。

  4. class Simple
  5. {
  6.         public $age = 100;

  7.         public function test()
  8.         {
  9.                 echo $this->age += 1;
  10.         }

  11.         public function fao()
  12.         {
  13.                 echo $this->age;
  14.         }
  15. }
  16. $o = new Simple();
  17. $o->test();
  18. $o->fao();
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|外汇论坛 ( 粤ICP备16021788号 )

GMT+8, 2024-10-23 07:35 , Processed in 0.069917 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表