写点什么

【web 开发基础】PHP 自定义常规函数的声明及应用 (30)

作者:迷彩
  • 2022-11-22
    广东
  • 本文字数:1601 字

    阅读完需:约 5 分钟

前言

编写 PHP 程序时,可以自己定义函数,当然如果 PHP 系统中有直接可用的函数是最好的了。没有时才去自己定义。在 PHP 系统中有很多标准的函数可供使用,但有一些函数需要和特定的 PHP 扩展模块一起编译,否则在使用他们的时候就会的一个致命的“未定义函数”错误。例如,要使用图像函数 imagecreatetruecolor(),需要在编译 PHP 的时候加上 GD 的支持;或者,要使用 mysql_connect()函数,就需要在编译 PHP 的时候加上 MySQL 的支持。有很多核心的函数已包含在每个版本的 PHP 中,如字符串和变量函数,调用 phpinfo()或者 get_loaded_extentsions()函数可以得知 PHP 加载了那些扩展库。同时还应该注意的是,很多扩展默认就是有效的。

调用系统函数和调用自定义函数方式相同,系统中为我们提供了每一个函数,都会有详细的帮助信息,所以使用函数时没有必要花费大量的时间去研究函数内部是如何执行的,只要参考帮助文档完成函数的调用,能我们需要的功能即可。当然,如果声明一个函数让其他人去应用也应该提供一份该函数的详细使用说明。如果想通过帮助文档成功地应用一个函数,则介绍函数使用的帮助文档就必须包括以下 3 点:


  1. 函数的功能描述:决定是否使用这个函数。使用哪个函数去完成什么样的任务,都是需要对号入座的,所以通过函数的功能描述就可以让我们决定在自己的脚本中是否使用它。

  2. 参数说明:决定怎么使用这个函数,参数的作用就是执行函数前导入某些数值,以提供函数处理执行,通过函数的参数传值可以改变函数内部的执行行为,所以怎么传值、传什么值,传什么类型的值,传几个值等的详细说明才是决定如何使用函数的关键。

  3. 返回值:调用后如何处理。在脚本中通过获取函数调用后的返回值来决定程序的下一步执行,所以就必须要了解函数是否有返回值、返回什么样的值、返回什么类型的值。

比如下面的自定义函数,就包括了这三方面的帮助信息:

<?php/**定义一个求两个整数的和的函数@param int $i 第一个参数,作为其中一个运算数@param int $j 第二个参数,作为其中一个运算数@return int  返回一个计算后整数*/function  testSum($i, $j){	$s = 0;	$s = $i + $j;	return $s;}
echo testSum(2, 4);
复制代码

执行结果如下:


PHP 函数的参数才是决定如何成功应用一个函数或是控制一个函数执行行为的标准。又因为 PHP 是弱类型语言,参数的设置和应用有多种方式,所以学会声明具有不同的参数函数,以及可以成功调用各种同形式参数的函数,才是学习 PHP 函数的关键,接下来本文着重介绍 PHP 的常规参数的函数。


常规参数函数

常规参数的函数格式如下:

string product(string name, int quantity,double price){//...}
复制代码

我们所谓的常规参数的函数,就是实参和形参应该个数相等且类型一致,像 C/C++或 Java 等强类型语言的参数使用方法一样。这类函数的调用比较容易,因为灵活性不大,像强类型语言一样要求比较严格(参数个数是固定的,每个参数的类型也是固定的)


在 PHP 中,如果声明这样的函数就发挥不了 PHP 弱类型语言的优势。比如,在上面常规参数的函数语法格式示例中,声明一个名为 product()的函数,函数执行后返回一个字符串类型的值。该函数有三个参数,调用时传递的参数个数和顺序必须一致,并且第一个参数必须是字符串类型,第二个参数必须是整型,第三个参数必须是双精度浮点类型。再比如前面的 testSum()函数求两个整数的和就是一个常规参数的函数,要求必须有两个整型的参数。系统函数也有很多属于这种类型。一些使用常规参数的系统函数如下所示:


string chr(int ascii)//必须使用一个整数作为参数float ceil(float value)//必须使用一个浮点数作为参数array array_combine(array keys, array values)//两个参数必须为数组类型的数据int strnatcmp(string str1, string str2)//两个参数必须为字符串类型string implode(string glue, array pieces)//第一个参数必须为字符串,第二参数为数组类型string readdir(resource dir_handle) //必须使用一个资源类型的数据作为参数
复制代码


发布于: 刚刚阅读数: 7
用户头像

迷彩

关注

我的工作是常年写bug|公众号:编程架构之美 2020-06-18 加入

修bug的菜鸟~公众号:“互联网有啥事”已改名为“编程架构之美”

评论

发布
暂无评论
【web 开发基础】PHP 自定义常规函数的声明及应用  (30)_函数_迷彩_InfoQ写作社区