博主信息
博文 50
粉丝 0
评论 0
访问量 47959
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
函数及类与对象
手机用户1580651468
原创
710人浏览过

函数及类与对象

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

一). 输出函数

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

二)实现的效果图

批改老师:PHPzPHPz

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学