博客列表 >php函数,class

php函数,class

手机用户311660634
手机用户311660634原创
2022年12月05日 02:10:47611浏览
  1. <?php
  2. // 函数
  3. // 函数的申明,int说明参数是要整数类的。如果需要Return的值有除了整数外的字符,
  4. // 需要在sum()这里加上‘:string'
  5. function sum(int $a, int $b){
  6. return $a + $b;
  7. }
  8. // 函数的调用
  9. echo sum(20, 50);
  10. // 如果需要参数太少,可在申明函数的时候,给参数一个默认值。如function sum($a, $b=null)
  11. // 如果参数过多,可以用'...$参数名'如:function sum(...$args)
  12. // 如果想引用函数内的值,可在申明函数的时候,在参数前加&
  13. function he(&$a){
  14. return $a += 10;
  15. }
  16. $a = 10;
  17. echo he($a);
  18. // 此时$a在全局中的值经过了函数作用,现在就是20。不在是之前申明的10
  19. echo $a . "\n";
  20. function fn1()
  21. {
  22. return ['name'=>'zhulaoshi','email'=>'zhulaoshi@php.cn'];
  23. }
  24. // 用解构语法
  25. // [$name, $email]= fn1();
  26. ['name'=>$name,'email'=>$email]= fn1();
  27. echo "$name ( $email ) ";
  28. // 回调
  29. function add($a,$b,$c){
  30. return array_sum([$a, $b, $c]);
  31. }
  32. // 回调调用有两个 call_usrr_func_array 和 call_user_func,推荐使用call_user_func_array
  33. // 因为call_user_func能做的call_user_func_array都能做
  34. echo call_user_func_array('add', [10,20,30]);
  35. // 类与对象
  36. class test{
  37. // public是公开成员
  38. public string $name;
  39. // private 这是私有成员,只能类中访问,类外不可见
  40. private int $age;
  41. private int $gz;
  42. // __construct 是构造方法,在类实例中能自动调用。两个下滑杠的是魔术方法,用户不能调用,只能PHP调用
  43. public function __construct($name, $age,$gz){
  44. $this->name = $name;
  45. $this->age = $age;
  46. $this->gz = $gz;
  47. }
  48. // 属性重载, 拦截外部的非法属性访问
  49. // __get()获取器,当获取一个不存在或无权限访问的属性时触发
  50. public function __get($name){
  51. if($name === 'age')
  52. return $this->$name;
  53. }
  54. // __set必须有两个参数(属性名,新值)
  55. public function __set($name,$value){
  56. if ($name === 'gz')
  57. $this->$name += $value;
  58. }
  59. private function hello($a, $b, $c)
  60. {
  61. return <<< DATA
  62. $this->name :
  63. 工资($this->gz)
  64. 年龄($this->age)
  65. DATA;
  66. }
  67. // 普通方法重载: __call()
  68. // 静态方法重载: __callStatic()
  69. // $name: 方法名称, $arguments: 参数数组
  70. public function __call($name, $arguments)
  71. {
  72. if ($name === 'hello') {
  73. return <<< DATA
  74. $this->name :
  75. 工资($this->gz)
  76. 年龄($this->age)
  77. DATA;
  78. }
  79. if ($name === 'sum') {
  80. return array_sum($arguments);
  81. }
  82. }
  83. }
  84. $obj = new test('老师', 40,5000);
  85. echo $obj->age;
  86. echo $obj->gz = 2000;
  87. echo $obj->hello('a', 'b', 'c');
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议