首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

(004)系统学习PHP之浅析函数

关注「通通生活史」一起学习PHP

导读

PHP 的真正力量来自它的函数:它拥有超过 1000 个内建的函数。除了内置的函数以外,程序员还可以自定义函数

本章将主要简述PHP函数的基础概念及几种特殊的函数,包括可变函数、回调函数、匿名函数、递归函数等;

正 文

1

关于PHP的基础概念

函数是可以在程序中重复使用的语句块。页面加载时函数不会立即执行。函数只有在被调用时才会执行。当封装完函数之后将其导入内存中,当调用函数时,找到对应的函数,执行对应的函数体,当碰到Return语句或者执行到函数尾部时,将控制权移交到函数的位置上,接着程序继续执行;在 PHP 中,提供了超过 1000 个内建的函数,有日期函数、数学函数、字符串函数等,在W3C有全部函数的介绍。

当然,更多的情况下,程序员需要的是自定义函数

2

关于自定义函数

一个函数可以由一下语法来定义:

声明以关单 “function” 开头:

函数名能够以字母或下划线开头(而非数字)。

函数名对大小写不敏感。

可以通过参数向函数传递信息。参数类似变量。

多参数,要用逗号隔开。

可以使用默认参数。

return 语句使函数有返回值 。

3

关于函数的参数

通过参数可以向函数传递信息,参数被定义在函数名之后,括号内部。多参数只要用逗号隔开即可。

参数是从左向右求值的。PHP 支持按值传递参数(默认),通过引用传递参数以及默认参数。也支持可变长度参数列表。 #1 向函数传递数组参数:

#2 用引用传递函数参数:

默认情况下,函数参数通过值传递(因而即使在函数内部改变参数的值,它并不会改变函数外部的值)。如果希望允许函数修改它的参数值,必须通过引用传递参数。

#3 在函数中使用默认参数 :

注意当使用默认参数时,任何默认参数必须放在任何非默认参数的右侧;否则,函数将不会按照预期的情况工作。

4

关于函数的返回值

值通过使用可选的返回语句返回。可以返回包括数组和对象的任意类型。返回语句会立即中止函数的运行,并且将控制权交回调用该函数的代码行。

#1return的使用

函数不能返回多个值,但可以通过返回一个数组来得到类似的效果。

#2 返回一个数组以得到多个返回值

5

函数的作用域

函数体外的声明的变量或者在函数体内通过global关键字声明的变量称为全局变量。在函数体内的变量称为局部变量,局部变量又分为动态变量静态变量,动态变量函数执行完毕之后立即释放(不保存),静态变量是通过static关键字声明的变量,当第一次调用函数的时候相当与初始化静态变量,当函数执行完毕之后静态变量没有释放而是保存在静态内存中,当再次调用函数的时候首先从静态内存中取出变量的值继续执行。

6

可变函数

PHP 支持可变函数的概念。这意味着如果一个变量名后有圆括号,PHP将寻找与变量的值同名的函数,并且尝试执行它。可变函数可以用来实现包括回调函数,函数表在内的一些用途。

#1 可变(函数)方法范例:

可变函数不能用于例如echo,print,unset(),isset(),empty(),include,require以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。

7

回调函数

通俗解释:回调函数是在调用一个函数时将另外一个函数名称作为参数传递到函数体中,并在函数体内调用;

#1被传递函数无参数时

#2被传递函数有参数时

#3 被传递函数含有多个参数时

在PHP系统函数中,回调函数有很多应用,常用的有 array_map()、array_walk()、array_fileter() 等;

8

匿名函数

匿名函数,也叫闭包函数,允许临时创建一个没有指定名称的函数,最经常用作回调函数参数的值,匿名函数也可以作为变量的值来使用;

#1

#2

#3

9

递归函数

如果函数A需要调用函数B,而发现函数B的代码实现与函数A完全相同,以此类推,此时就需要封装递归函数,递归函数最基本的特点是函数自身调用自身,但必须在调用自身前有条件判断,否则无限无限调用下去。主要应用于PHP实现目录的遍历,目录的复制,删除非目录操作、无限极分类等;

#1

__FUNCTION__的使用,返回的是函数的名称!尽量不要使用递归函数,很容易造成无限递归造成死循环;

10

内置函数

PHP 有很多标准的函数和结构。还有一些函数需要和特定地 PHP 扩展模块一起编译,否则在使用它们的时候就会得到一个致命的“未定义函数”错误。例如,要使用 image 函数中的imagecreatetruecolor(),需要在编译 PHP 的时候加上GD的支持。或者,要使用mysql_connect()函数,就需要在编译 PHP 的时候加上 MySQL 支持。有很多核心函数已包含在每个版本的PHP 中如字符串和变量函数。调用phpinfo()或者get_loaded_extensions()可以得知 PHP 加载了那些扩展库。同时还应该注意,很多扩展库默认就是有效的。

PHP手册按照不同的扩展库组织了它们的文档。请参阅配置,安装以及各自的扩展库章节以获取有关如何设置 PHP 的信息。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180216G0EOPT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券