PHP函数

简介: PHP语言中有关函数的知识点


本文是复习所写,并不会涵盖一些基础知识点

用户自定义函数

<?php

 

/**

* 示例函数

*

* @param mixed $arg1 参数一

* @param mixed $arg2 参数二

* @param mixed $argN 参数N

* @return mixed

*/

functionfoo($arg1, $arg2, $argN)

{

   return'called!';

}

  • PHP中函数是全局的,只要定义了就可以在任何地方调用
  • 函数内部可以写任何有效的PHP代码,就算定义函数和类也是可以的
  • PHP不支持函数重载,也不能取消定义和重写义已声明函数
  • 递归调用时,要避免超过100~200层

函数参数

  • 引用传参

<?php

functionfoo(&$arg)

{

   $arg=1;

}

  • 在参数前面加上&可以将值传递变为引用传递,在函数内对变量做的操作会改变函数外的变量
  • 参数默认值

<?php

functionfoo($arg='demo')

{

   var_dump($arg);

}

  • 默认值必须是常量表达式,不能是变量、类成员、函数调用等
  • 可变数量参数

<?php

functionfoo($arg, ...$args)

{

   var_dump($arg);

   var_dump($args);

}

foo(1,2,3,4,5);

foo([1,2,3]);

  • 在参数前加...来标识这个参数是可变参数
    可变参数只能是参数列表中最后一个
    也可以通过func_num_args()func_get_arg()func_get_args()函数来获取可变参数
  • 命名参数 PHP 8
    有了命名参数后在调用函数时就可以忽略参数顺序,配合参数默认值使用的话就可以在使用函数时只传需要的参数而不必要将无意义的值也传上
    命名参数通过在参数名前加上冒号来传递,可以使用保留关键字,但不能使用变量

<?php

 

functionfoo(first_num: $a, last_num: $b)

{

   return$a+$b;

}

 

 

返回值

使用return可以返回任何类型数据,return会立即终止函数的执行,并将执行权交还给调用者

可以使用list解包数组类型的返回值

<?php

functionfoo()

{

   return ['one', 'two'];

}

list($a, $b) =foo();

函数返回引用类型值时,函数声明和函数调用前都必须加&

<?php

function&foo()

{

   $a=1;

   return$a;

}

$b=&foo();

可变函数

如果变量名后有(),PHP将寻找与变量的值同名的函数,并尝试执行

<?php

 

$funName='foo';

 

// 函数

functionfoo($a)

{

   var_dump($a);

}

$funName('demo');

 

// 类方法

classTest()

{

   static$foo='attribute';

   

   publicfunctionfoo($a)

   {

       var_dump($a);

   }

   

   publicstaticfunctiontwo($a)

   {

       var_dump($a);

   }

   

}

(newTest())->$funName('test'); // 方式一

 

$fun= ['Test', 'foo']; // 方式二

$fun();

 

$fun= [newTest, 'foo']; // 方式三

$fun();

 

$fun='Test::two'; // 类静态方法

$fun();

内部函数

PHP有很多内置函数,有些函数是需要和特定的扩展一起编译

function_exists()判断函数是否存在

get_extension_funcs()获取某个模块的函数列表

dl()加载模块

匿名函数

匿名函数是通过Closure类来实现

匿名函数可以用use来从父类继承变量,也可以定义参数

<?php

$a = 1;

$fun = functon ($b) use ($a) {

   echo $a + $b;

};

在类中使用时,会在匿名函数内部自动绑定$this

<?php


class Test()

{

   public $attr = 1;

   

   public function foo()

   {

       return function (){

           var_dump($this);

       }

   }

   

   // 当不需要自动绑定时,可以将匿名函数静态化

   public function two()

   {

       return static function() {

           var_dump($this);

       }

   }

}

箭头函数PHP 7.4

箭头函数跟匿名函数一样,都是通过Closure实现,只是比匿名函数更简洁,也只能实现比较简单的功能

箭头函数会自动捕获父作用域变量进行值拷贝

<?php

$x = 1;

$fn = fn($a, $b) => $a + $b + $x;

var_dump($fn(1, 2));


// 箭头函数可以嵌套

$fn = fu($a) => fu($b) => $a + $b;

var_dump($fn(1)(2));

First class callable syntaxPHP 8.1

这是一中引用闭包的新方法

<?php

// PHP8.1之前

// 使用Closure将函数转成闭包形式

$closure = Closure::fromCallable('strlen');

var_dump($closure('sssss'));


// PHP8.1

$closure = strlen(...);

var_dump($closure('demo'));


目录
相关文章
|
2月前
|
PHP
php常见问题,php.ini文件不存在或者找不到,mb_strlen()函数未定义系列问题,dll模块找不到的解决
本文介绍了解决PHP常见问题的步骤,包括定位和创建`php.ini`文件,以及解决`mb_strlen()`函数未定义和DLL模块加载错误的具体方法。
php常见问题,php.ini文件不存在或者找不到,mb_strlen()函数未定义系列问题,dll模块找不到的解决
|
11天前
|
关系型数据库 MySQL 数据库连接
PHP内置函数
PHP内置函数
20 5
|
2月前
|
存储 API PHP
php学习笔记-php数组的创建和使用,数组常用函数-day03
关于PHP数组的创建、使用以及常用函数的详细学习笔记。
php学习笔记-php数组的创建和使用,数组常用函数-day03
|
1月前
|
Unix PHP 数据库
PHP日期和时间Date()函数获取当前时间
通过灵活运用 `date()`函数及其丰富的格式选项,PHP开发者可以轻松地在应用程序中处理和展示日期及时间信息。无论是需要精确到秒的完整时间戳,还是仅仅展示日期或时间的某一部分,`date()`函数都能胜任。理解并熟练应用这些格式化技巧,对于提升代码的可读性和维护性至关重要。
43 1
|
2月前
|
XML SQL PHP
php学习笔记-php字符串及字符串常用函数总结-day04
本文总结了PHP中字符串的三种定义方式和常用字符串处理函数,包括字符串的修剪、转换、长度计算、子串操作、比较、连接、分割及替换等操作。
|
2月前
|
设计模式 存储 算法
PHP中的设计模式:策略模式的深入解析与应用在软件开发的浩瀚海洋中,PHP以其独特的魅力和强大的功能吸引了无数开发者。作为一门历史悠久且广泛应用的编程语言,PHP不仅拥有丰富的内置函数和扩展库,还支持面向对象编程(OOP),为开发者提供了灵活而强大的工具集。在PHP的众多特性中,设计模式的应用尤为引人注目,它们如同精雕细琢的宝石,镶嵌在代码的肌理之中,让程序更加优雅、高效且易于维护。今天,我们就来深入探讨PHP中使用频率颇高的一种设计模式——策略模式。
本文旨在深入探讨PHP中的策略模式,从定义到实现,再到应用场景,全面剖析其在PHP编程中的应用价值。策略模式作为一种行为型设计模式,允许在运行时根据不同情况选择不同的算法或行为,极大地提高了代码的灵活性和可维护性。通过实例分析,本文将展示如何在PHP项目中有效利用策略模式来解决实际问题,并提升代码质量。
|
3月前
|
Linux PHP
Linux CentOS 宝塔 Suhosin禁用php5.6版本eval函数详细图文教程
【8月更文挑战第27天】本文介绍两种禁用PHP执行的方法:使用`PHP_diseval_extension`禁用和通过`suhosin`禁用。由于`suhosin`不支持PHP8,仅适用于PHP7及以下版本,若服务器安装了PHP5.6,则需对应安装`suhosin-0.9.38`版本。文章提供了详细的安装步骤,并强调了宝塔环境下与普通环境下的PHP路径差异。安装完成后,在`php.ini`中添加`suhosin.so`扩展并设置`executor.disable_eval = on`以禁用执行功能。最后通过测试代码验证是否成功禁用,并重启`php-fpm`服务生效。
49 2
|
3月前
|
JavaScript 前端开发 PHP
|
3月前
|
监控 数据库连接 PHP
php中register_shutdown_function函数用法详解
通过 `register_shutdown_function`,PHP开发者可以对脚本的终止进行更精细化的处理,这个函数让开发者能在脚本的生命周期结束时有机会执行最后的操作,无论脚本是正常结束还是发生错误。由于它的高度实用性和灵活性,`register_shutdown_function`是PHP开发中不可或缺的工具之一。
64 0
|
4月前
|
SQL 关系型数据库 MySQL
php所有函数总结
以上只是PHP中函数的一部分,实际上PHP提供了丰富的内置函数,能够处理各种复杂的任务。
27 2