博客列表 >函数及类与对象

函数及类与对象

手机用户1580651468
手机用户1580651468原创
2022年12月07日 20:00:36471浏览

函数及类与对象

一. 实例演示函数的相关知识点

一). 输出函数

  1. echo 'Hello';
  2. print 'World'; //有返回值
  3. var_dump([1,2,3]);
  4. var_export([1,2,3]);
  5. printf('uname = %s','朱老师');//格式化输出
  6. print_r([1,2,3]);
  7. echo sprintf('<div style="color:blue">%s</div>','php中文网');
  8. $str=vprintf('%d+%d=%d',[10,20,10+20]);
  9. echo $str;
  10. // 四个数据格式化函数记忆方式
  11. // 1.printf(format,a,b,...):打印(离散参数)
  12. // 2.vprintf(format,array):打印(数组参数)
  13. // 3.sprintf(format,a,b,...):只返回不打印
  14. // 4.vsprintf(format,array):只返回不打印
  15. // 记忆:
  16. // s:只返回不打印
  17. // v:数组参数

二).函数

1.申明 (类型进行限定)

  1. function sum(int $a,int $b):int{return $a+$b;}

2.调用

  1. echo sum(10,20);

3.参数

  1. // php禁止函数重载:同一作用域内,存在同名函数,根据参数不同判断调用哪个
  2. function sum1(int $a, int $b,int $c=0):int{ return array_sum([$a,$b,$c]);}
  3. // 3.1参数太少:加一个默认值
  4. echo sum1(1,2,3),"\n";
  5. // echo sum1(1,2);这样会报错需要默认值
  6. // 3.2参数太多:可以用可变参数(...rest)
  7. echo sum1(1,2,3,4,5,6),"\n";
  8. function sum2(...$args):int{return array_sum($args);}
  9. // 3.3引用参数
  10. function sum3(&$a){return $a+=10;}
  11. $a=10;
  12. echo sum3($a);
  13. echo '$a='.$a."\n";

4.返回值

  1. // 4.1默认返回单值
  2. // 4.2多值返回用数组
  3. function fn1(){ return ['admin','admin@php.cn'];}
  4. print_r(fn1());
  5. list($name,$email)=fn1();
  6. // 可以直接用js模板解构
  7. [$name,$email]=fn1();
  8. echo "$name($email)";

二. 实例演示课堂上提及全部类与对象的关键字,重点放在属性与方法的重载上

一)代码的实现

  1. <?php
  2. /**
  3. * class: 声明类
  4. * new: 类的实例化
  5. * public: 访问限制符(公开成员/默认值)
  6. * private: 访问限制符(私有成员,仅在类中访问,类外不可见)
  7. * __construct(): 构造方法(实例化时调用,用于初始化类实例)
  8. * $this: 当前类实例的引用,只能用在类中
  9. * __get($name): 属性重载,拦截非法属性"读"访问
  10. * __set($name,$value): 属性重载,拦截非法属性"写"访问
  11. * __call($name,$arguments): 方法重载,拦截非法的方法访问
  12. */
  13. // 类声明:class
  14. class Demo
  15. {
  16. // 访问限制符:public公开成员(默认值)
  17. // __method:魔术方法,用户不能直接调用,PHP调用
  18. // 用途:创建实例初始化状态,属性,调用方法
  19. public string $name='朱老师';
  20. private int $salary;
  21. private int $age;
  22. // 方法:函数
  23. // 构造方法:在类实例时化自动调用
  24. // __method:魔术方法,用户不能直接调用,由php调用
  25. // 用途:创建实例初始化状态,属性赋值,调用方法
  26. public function __construct($name,$salary,$age)
  27. {
  28. $this->name=$name;
  29. $this->salary=$salary;
  30. $this->age=$age;
  31. }
  32. public function getSalary(){
  33. return $this->salary-5000;
  34. }
  35. public function setSalary($value){
  36. $this->salary +=$value;
  37. }
  38. //属性重载,拦截外部的非法属性访问
  39. public function __get($name){
  40. if($name==='salary'){
  41. return $this->$name-5000;
  42. }
  43. return $this->$name;
  44. }
  45. // __set(value):属性设置器(写)
  46. public function __set($name,$value){
  47. if($name==='salary'){
  48. $this->$name += $value;
  49. }
  50. else{
  51. $this->$name = $value;
  52. }
  53. }
  54. // 格式化打印
  55. private function hello($a,$b,$c)
  56. {
  57. return <<< DATA
  58. $this->name:
  59. 工资($this->salary)
  60. 年龄($this->age)
  61. DATA;
  62. }
  63. // 方法重载
  64. // $name:方法名称,$arguments:参数数组
  65. public function __call($name,$arguments)
  66. {
  67. // return $name .','.join(',',$arguments);
  68. if($name==='hello'){
  69. return <<< DATA
  70. $this->name:
  71. 工资($this->salary)
  72. 年龄($this->age)
  73. DATA;
  74. }
  75. }
  76. }
  77. // 类的实例化:对象
  78. // 实例===对象
  79. $obj = new Demo('王老师',8000,30);
  80. $obj->salary += 2000;
  81. // $obj->setSalary(2000);
  82. echo $obj->salary."\n";
  83. echo $obj->getSalary()."\n";
  84. $obj->age=40;
  85. echo $obj->age =40,"\n";
  86. echo $obj->hello('a','b','c')."\n";
  87. var_dump($obj);
  88. Db::table('user')->field('id','name');

二)实现的效果图

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