批改状态:合格
老师批语:
<?php//todo 函数// 1.声明function sum(int $a, int $b): string{return vsprintf("%d + %d =%d\n", [$a, $b, $a + $b]);}// 2.调用echo sum(10, 20);// 3.参数function sum1(int $a, int $b, int $c = 0): int{return array_sum([$a, $b, $c]);}echo sum1(1, 2, 3), "\n";// 3.1 参数太少,默认参数echo sum1(1, 2), "\n";// 3.2参数太多,可变参数function sum2(...$args): int{return array_sum($args);}echo sum2(1, 2, 3, 4, 5, 6), "\n";$arr = range(1, 6);// ...rest在调用的时候,执行的不是压入.而是展开echo sum2(...$arr), "\n";// 3.3 引用参数// '&'引用参数地址function sum3(&$a){return $a += 10;}$a = 10;echo sum3($a), "\n";echo '$a =' . $a, "\n";// 4.返回值// 默认单值, 多值返回数组function fn1(){// return ['admin', 'admin@php.cn'];return ['name' => 'zhulaoshi', 'email' => 'zhulaoshi@php.cn'];}print_r(fn1());// 解构['name' => $name, 'email' => $email] = fn1();echo "$name ( $email ) \n";// 回调函数echo call_user_func('sum2', 1, 2, 3, 4, 5, 6) . "\n";echo call_user_func_array('sum2', [1, 2, 3, 4, 5, 6]);

<?php// 类与对象/*** class: 声明类* new: 类的实例化* public: 访问限制符(公开成员/默认值)* private: 访问限制符(私有成员,仅在类中访问,类外不可见)* __construct(): 构造方法(实例化时调用,用于初始化类实例)* $this: 当前类实例的引用,只能用在类中* __get($name): 属性重载,拦截非法属性"读"访问* __set($name,$value): 属性重载,拦截非法属性"写"访问* __call($name,$arguments): 方法重载,拦截非法的方法访问*/// class: 声明类class Demo{// 属性: 变量// 访问限制符: public公开成员(默认值)public string $name;private int $salary;private int $age;// 方法: 函数// 构造方法: 在类实例化时自动调用// __method: 魔术方法,用户不能直接调用,由PHP调用// 用途: 创建实例初始化状态,属性赋值,调用方法public function __construct($name, $salary, $age){$this->name = $name;$this->salary = $salary;$this->age = $age;}// 属性重载, 拦截外部的非法属性访问// __get()获取器,当获取一个不存在或无权限访问的属性时触发public function __get($name){$result = 0;if ($name === 'salary') {$result = $this->$name - 5000;} else {$result = $this->$name;}return $result;}// __set(属性名,新值)public function __set($name, $value){if ($name === 'salary') {$this->$name += $value;} else {$this->$name = $value;}}// 格式化打印private function hello(){return <<< DATA$this->name :工资($this->salary)年龄($this->age)DATA;}// 方法重载public function __call($name, $arguments){if ($name === 'hello') {return <<< DATA$this->name :工资($this->salary)年龄($this->age)DATA;}if ($name === 'sum') {return array_sum($arguments);}}}// 类实例化: 对象$obj = new Demo('王老师', 8000, 30);echo $obj->salary . "\n";$obj->salary = 2000;echo $obj->salary, "\n";$obj->age = 40;echo $obj->age, "\n";echo $obj->hello(), "\n";// call_user_func// call_user_func_array// 用它调用对象的方法echo call_user_func([$obj, 'sum'], 1, 2, 3) . "\n";echo call_user_func_array([$obj, 'sum'], [1, 2, 3]) . "\n";

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