PHP闭包函数(closures) 匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数 callable参数的值。

闭包的概念等同于JS里的闭包。可在函数内进行定义赋值

匿名函数目前是通过 Closure 类来实现的。闭包函数也可以作为变量的值来使用。PHP 会自动把此种表达式转换成内置类 Closure 的对象实例。把一个 closure 对象赋值给一个变量的方式与普通变量赋值的语法是一样的,最后也要加上分号:

use 匿名函数允许被定义为静态化(使用static修饰)。这样可以防止当前类自动绑定到它们身上,对象在运行时也可能不会被绑定到它们上面。

匿名类 PHP 7 支持通过 new class 来实例化一个匿名类,这可以用来替代一些“用后即焚”的完整类定义。

可变参数 PHP 在用户自定义函数中支持可变数量的参数列表。由 … 语法实现。

注意: 还可以使用以下函数来获取可变参数 func_num_args()、 func_get_arg() 和 func_get_args(),不建议使用此方式,请使用 … 来替代。

包含 … 的参数,会转换为指定参数变量的一个数组,见以下示例

<?php /* 可以使用 … 语法来传递 array 或 Traversable 做为参数到函数中: */ function sum(…$numbers) {

$acc = 0;
foreach ($numbers as $n) {
    $acc += $n;
}
return $acc;

} echo sum(1, 2, 3, 4); ?> <?php function add(\(a, \)b) {

return $a + $b;

} echo add(…[1, 2]).“n”; \(a = [1, 2]; echo add(...\)a); ?> 循环内可以include。 计算时间差 \(time= date("Y-m-d H:i:s",time()-600000); \)time=date_diff(date_create($time),date_create(date(“Y-m-d H:i:s”,time())));

直接返回DateInterval对象,保存两个时间相差的年月日时分秒;

注册一个会在php中止时执行的函数 callback 可以多次调用 register_shutdown_function() ,这些被注册的回调会按照他们注册时的顺序被依次调用。 如果你在注册的方法内部调用 , 那么所有处理会被中止,并且其他注册的中止回调也不会再被调用。

PHP7.4新特性 <?php \(var=1; \)recursive = function () use ($var) { } ?>

命令行下的PHP 在php命令行下执行.php文件时,执行环境的工作目录是php命令程序(php.exe)所在目录,所以如果想在文件内使用相对路径时,要先切换当前的工作目录才行。 解决方法:将工作目录切换到当前文件目录

\(cur_dir = dirname(__FILE__); chdir(\)cur_dir); require(‘../class/info.php’);

pathinfo() pathinfo() 函数以数组的形式返回关于文件路径的信息。

返回的数组元素如下:

system和exce函数的区别 注意:如果程序使用这两种函数启动,为了能保持在后台运行,此程序必须将输出重定向到文件或其它输出流。否则会导致 PHP 挂起,直至程序执行结束。

1.exec  —执行外部程序 string exec ( string \(command [, array &\)output [, int &$return_var ]] )

$command  ,要执行的shell 命令

$output, shell命令的输出填充此数组,每行输出填充数组中的一个元素。 请注意,如果数组中已经包含了部分元素,exec() 函数会在数组末尾追加内容。如果你不想在数组末尾进行追加,请在传入 exec() 函数之前 对数组使用 unset() 函数进行重置。

$return_var,命令执行后的返回状态,命令执行成功值是0

返回值, shell命令输出的最后一行

bypass_shell 2.system — 执行外部程序,并且显示输出 不同于exec,system会直接输出命令执行的结果。

system(string \(command, int &\)return_var = ?): string

command,要执行的命令。

return_var,如果提供 return_var 参数, 则外部命令执行后的返回状态将会被设置到此变量中。

返回值,成功则返回命令输出的最后一行, 失败则返回 false

类型的还有:popen()、proc_open()、等等;

如果你的程序需要在windows后台运行,并且是在cmd下启动,那么在执行的程序前加上start /b,比如start /b [程序名]。

3.popen() popen(string \(command, string \)mode): resource

返回一个和 fopen() 所返回的相同的文件指针,只不过它是单向的(只能用于读或写)并且必须用 pclose() 来关闭。此指针可以用于 fgets(),fgetss() 和 fwrite()。 当模式为 ‘r’,返回的文件指针等于命令的 STDOUT,当模式为 ‘w’,返回的文件指针等于命令的 STDIN。

4.proc_open proc_open(

mixed $cmd,
array $descriptorspec,
array &$pipes,
string $cwd = null,
array $env = null,
array $other_options = null

): resource

类似 popen() 函数, 但是 proc_open() 提供了更加强大的控制程序执行的能力。

YAML YAML 是 “YAML Ain‘t a Markup Language”(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。

YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。

YAML 的配置文件后缀为 .yml,如:runoob.yml 。

PHP用于读取yaml的函数:https://www.php.net/manual/zh/function.yaml-parse-file.php

PHP COM对象操作 首先在php.ini中加入,extension=php_com_dotnet.dll

然后在php.ini中开启,com.allow_dcom = true

之后就可以使用new COM进行操作了。

PHP反引号运算符 PHP 支持一个执行运算符:反引号(”)。注意这不是单引号!PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。

<?php

    $output = `ls -al`;
    echo "<pre>$output</pre>";

?>

PHP没怎么见过的加解密函数 bin2hex 、hex2bin(),用于字符串转16进制以及转回来。

<?php echo bin2hex(“我在中国!”); echo “n”.hex2bin(“e68891e4b99fe4b88de79fa5e98193”);

字符编码检测 $out_string = mb_detect_encoding(“不知道”, array(“ASCII”, “UTF-8”, “GB2312”, “GBK”, “BIG5”));

wordwrap(),函数 wordwrap(string,width,break,cut),函数按照指定长度对字符串进行折行处理。

注释:该函数可能会在行的开头留下空格。

list函数 list() 函数用数组中的元素为一组变量赋值。注意,与 array() 类似,list() 实际上是一种语言结构,不是函数。

extract() 函数 extract() 函数从数组中将变量导入到当前的符号表。

<?php \(a = "Original"; \)my_array = array(“a” => “Cat”,“b” => “Dog”, “c” => “Horse”); extract(\(my_array); echo "\)a = \(a; \)b = \(b; \)c = $c“; ?>

各种print函数的区别 1.printf printf用于输出格式化的字符串(输出到屏幕、或者fpm);

<?php \(number = 9; \)str = ”Beijing“; printf(”There are %u million bicycles in %s.“,\(number,\)str); ?>

2.sprintf 用于格式化字符串,但是不输出

3.fprintf fprintf() 函数把格式化的字符串写入到指定的输出流

小技巧 1.进制互转 hexdec、hex2bin

2.获取格林威治时间 gmdate(”M d Y H:i:s“,time()+8*3600); gmdate(’D, d M Y H:i:s GMT‘, time() + 8 * 3600); 3.文件匹配 \(file_search = glob( \)upload_root . ’/‘ . \(url_md5 . '.*' ); 4.AES加解密 openssl_decrypt(\)data,’AES-128-ECB‘,\(key, OPENSSL_RAW_DATA); base64_encode(openssl_encrypt(\)originTxt, ’AES-128-ECB‘,$key, OPENSSL_RAW_DATA));

5.对象唯一ID spl_object_id,返回对象的唯一标识符。对象 ID 在对象的生命周期内是唯一的。一旦对象被销毁,它的 id 可能会被其他对象重用。https://www.php.net/manual/zh/function.spl-object-id.php

6.闭包赋值给对象 (\(server->handel)(\)frame->data);

7.获取调用栈 debug_backtrace() 产生一条 PHP 的回溯跟踪(backtrace)。

阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。