PHP基础
PHP基础 第七章 函数
## 用户自定义函数 函数名和 PHP 中的其它标识符命名规则相同。有效的函数名以字母或下划线打头,后面跟字母,数字或下划线。可以用正则表达式表示为 ```php :[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*。 ``` 函数无需在调用之前被定义,除非是函数是有条件被定义时。 当一个函数是有条件被定义时,必须在调用函数之前定义。 PHP 中的所有函数和类都具有全局作用域,可以定义在一个函数之内而在之外调用,反之亦然。 PHP 不支持函数重载,也不可能取消定义或者重定义已声明的函数。 ## 可变函数 PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP 将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。 可变函数不能用于例如 echo,print,unset(),isset(),empty(),include,require 以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。 ```php function foo() { echo "In foo()<br />\n"; } $func = 'foo'; $func(); // This calls foo() ``` ## 内部(内置)函数 ## 匿名函数(闭包函数) ### 4.1 作为变量的值来使用 ```php $greet = function($name){ printf("Hello %s\r\n", $name); }; $greet('World'); ``` ### 4.2 从父作用域继承变量 闭包可以从父作用域中继承变量。 任何此类变量都应该用 use 语言结构传递进去。 ```php $message = 'hello'; // 继承 $message $example = function () use ($message) { var_dump($message); }; $example(); //hello $message = 'world'; $example = function ($arg) use ($message) { var_dump($arg . ' ' . $message); }; $example("hello"); //hello world ``` ### 4.3 Closures 和作用域:匿名函数通过 Closure 类来实现的。 ```php public function getTotal($tax) { $total = 0.00; $callback = function ($quantity, $product) use ($tax, &$total) { $pricePerItem = constant(__CLASS__ . "::PRICE_" . strtoupper($product)); $total += ($pricePerItem * $quantity) * ($tax + 1.0); }; array_walk($this->products, $callback); return round($total, 2);; } ```
顶部
收展
底部
[TOC]
目录
PHP基础 第一章 基本语法
PHP基础 第二章 类型
PHP基础 第三章 变量
PHP基础 第四章 常量
PHP基础 第五章 运算符
PHP基础 第六章 流程控制
PHP基础 第七章 函数
PHP基础 第八章 命名空间
PHP基础 第九章 异常与错误
PHP基础 第十章 类与对象
PHP基础 第十一章 生成器
PHP基础 第十二章 引用
PHP基础 第十三章 预定义变量
PHP基础 第十四章 上下文(Context)选项和参数
PHP基础 第十五章 支持的协议和封装协议
PHP基础 第十六章 安全
PHP基础 第十七 章 特点
PHP基础 第十八章 PHP 核心:骇客指南
PHP基础 第十九章 核心配置选项列表
相关推荐
PHP函数
PHP设计模式
PHP算法
PHP版本