【PHP】函数、类与对象

【PHP】函数、类与对象

函数、类与对象

1.函数、类与对象

<?php//todo 函数// 1. 声明:php7.3之后,强制要求定义参数类型(强类型)function sum(int $a,int $b):void{// 返回 int// return $a + $b;//返回类型:string// return $a + $b = . ($a + $b);// 直接打印,没有return// vprintf(“%d + %d = %d”, [$a,$b,$a+$b]);}// 2.调用// echo sum(10, 20);// echo sum(10,php);// 3.参数// PHP禁止函数搭建系统点我wcqh.cn重载,同一作用域,存在同名函数,根据参数不同判断调用那个函数function sum1(int $a,int $b,int $c =0):int{return array_sum([$a, $b, $c]);}// 3.1 参数太少echo sum1(1,2,3),“\n”;// echo sum1(1, 2), “\n”;// 3.2 参数太多:可变参数(js,…rest)function sum2(…$args):int{return array_sum($args);}// echo sum2(1, 2, 3, 4, 5) . “\n”;// …rest用在调用时,执行的不是压入,而是展开// 搭建系统点我wcqh.cn$arr = [1,2,3,4,5];// range函数,第1位是开始数,第2位是结束数,第3位是步长$arr = range(1,9,2);// echo sum2(…$arr);// 3.3 引用参数function sum3($a){return $a +10.“\n”;}$a =10;echo sum3($a);// 4.返回值,默认单值,多值返回用数组function fn1(){// return [admin,admin@qq.com];return[name=>admin,email=>admin@qq.com];}print_r(fn1());// list($name,$email搭建系统点我wcqh.cn) = fn1();//简化// [$name,$email] = fn1();[name=>$name,email=>$email]= fn1();echo “$name ( $email )”;echo “\n”;function add($a,$b,$c){return array_sum([$a,$b,$c]);}echo add(10,20,30).“\n”;//回调的方式调用一个函数echo call_user_func(add,20,30,40).“\n”;echo call_user_func_array(add,[30,40,50]).“\n”;

2.类与对象

<?php// 类与对象 /*搭建系统点我wcqh.cn* * class:声明类 * new:类的实例化 * public:访问限制符(公开成员/默认值) * private:仅限类中访问 * $this:当前类实例的引用,只能用在类中 * __get($name):属性重载,拦截非法属性读访问 * __get($name,$value):属性重载,拦截非法属性写属性 *///类声明classDemo{//属性:变量// 访问限制符+属性:public,公开成员(默认)publicstring $name;privateint $salary;// 构造方法:在类实例化时自动调用// __method:魔术方法,用户不能直接调用,由php调用// 用途:给属性设置初搭建系统点我wcqh.cn始化值publicfunction __construct($name, $salary){ $this->name = $name; $this->salary = $salary;}// 内部方法// public function getSalary()// {// return $this->salary;// }// public function setSalary($value)// {// return $this->salary = $value;// }// 属性重载,拦截外部的非常属性访问// __get()获取器,当获取一个不存在的或无权限访问的属性时触发publicfunction_搭建系统点我wcqh.cn_get($name){if($name ===salary){return $this->$name;}}// __get()设置器,两个参数(属性名,新值)publicfunction __set($name, $value){ $this->$name += $value;}//格式化打印privatefunction hello(){return<<< DATA $this->name :工资($this->salary)年龄($this->age) DATA;}//普通方法重载:__call()// $name:方法名称,$arguments:参数数组publicfunction __call($name,$搭建系统点我wcqh.cnarguments){// return $name . , . join(., $arguments);if($name ===hello){return<<< DATA $this->name :工资($this->salary)年龄($this->age) DATA;}if($name ===sum){return array_sum($arguments);}}}// 类实例化:对象$obj =newDemo(老马,6000);// var_dump($obj);// 调用内部方法// echo $obj->getSalary() . “\n”;// $obj->setSalary(8000) . “搭建系统点我wcqh.cn\n”;// echo $obj->getSalary() . “\n”;// 调用设置器和获取器echo $obj->salary .“\n”;$obj->salary =3000;echo $obj->salary .“\n”;$obj->age =40;echo $obj->age,“\n”;echo $obj->hello(a,b,c).“\n”;// call_user_func// call_user_func_array// 用它调用对象的方法echo call_user_func([$obj,sum],10,20,30).“\n”;echo call_user_func_array([搭建系统点我wcqh.cn$obj,sum],[40,50,60]).“\n”;
作者最新博文
2022-11-27 20:51:59

© 版权声明
THE END
喜欢就支持一下吧
点赞211 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容