Blogger Information
Blog 50
fans 0
comment 0
visits 31440
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
函数及类与对象
手机用户1580651468
Original
472 people have browsed it

函数及类与对象

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

一). 输出函数

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

二)实现的效果图

Correcting teacher:PHPzPHPz

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