`
天梯梦
  • 浏览: 13708928 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

PHP中功能强大却少使用的函数 -- 为你提供更多的思路

阅读更多

call_user_func_array — 让参数以数组的形式调用一个函数
call_user_func — 调用一个存在的函数
create_function — 建立一个函数
func_get_arg — 获取函数中某个参数的值
func_get_args — 获取函数的所有参数并组成数组
func_num_args — 获取一个函数的参数个数
function_exists — 判定一个函数是否存在
get_defined_functions — 获取已有的函数信息
register_shutdown_function — 注册一个页面载入完成后运行的函数
register_tick_function — 注册一个按要求调用的函数
unregister_tick_function — 取消一个按要求调用的函数

get_defined_functions可以获取所有的PHP函数和自定义的函数:

<?php
function a(){}
$b = get_defined_functions();
print_r($b);
//也许会显示1000多个已定义了的函数:)
?>

 

function_exists函数判定一个函数是否存在(可以是PHP函数,也可以是自定义函数)。

<?php
if (function_exists('a')) {
    echo "yes";
} else {
    echo "no";
}
function a(){}
// 显示 yes
?>
 

call_user_func函数类似于一种特别的调用函数的方法,使用方法如下:

<?php
function a($b,$c)
{
    echo $b;
    echo $c;
}
call_user_func('a', "111","222");
call_user_func('a', "333","444");
//显示 111 222 333 444
?>
 

调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也是满有新意的:

<?php
class a {
    function b($c)
    {
        echo $c;
    }
}
call_user_func(array("a", "b"),"111");
//显示 111
?>
 

call_user_func_array函数和call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰:

<?php
function a($b, $c)
{
    echo $b;
    echo $c;
}
call_user_func_array('a', array("111", "222"));
//显示 111 222
?>
 

call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:

<?php
function a(&$b)
{
    $b++;
}
$c = 0;
call_user_func('a', &$c);
echo $c;//显示 1
call_user_func_array('a', array(&$c));
echo $c;//显示 2
?>
 

func_num_args函数可以获取函数接受到参数的数量:

<?php
function a()
{
    echo func_num_args();
}
a(111, 222, 333);
//显示 3
?>
  

func_get_arg函数可以获取某一个传递过来参数的值,在下面的例子中,在函数中并没有具体说明有哪些参数会被接受,利用 func_get_arg还可以获取额外的参数:

<?php
function a()
{
     echo func_get_arg(1);
}
a (111, 222, 333);
//显示 222
?>
 

func_get_args函数的作用和func_get_arg非常相似,是把所有的参数当成数组来调用:

<?php
function a()
{
    $numargs = func_num_args();
    $b = func_get_args();
    for ($i = 0; $i < $numargs; $i++) {
        echo $b[$i];
    }
}
a(111, 222, 333);
//显示 111 222 333
?>
 

create_function函数可以建立一个匿名的函数(函数名被PHP默认为lambda_1,lambda_2),样子比较古怪,但是形式比较奇 特,要注意第二个参数内的语句要有“;”分隔:

 

<?php
$newfunc = create_function('$a,$b', 'return $a + $b;');
echo $newfunc;
echo $newfunc(2, 3);
//显示 lambda_1 5
?>
 

register_shutdown_function函数可以注册一个在页面载入完成之后运行的函数(功能有点像缓 存),register_shutdown_function也可以像call_user_func函数一样用作对类内部方法的调用:

 

<?php
function a() {
   echo  222 ;
}
echo 111;
register_shutdown_function('a');
//显示 111 222
?> 
<?php
class a
{
   function b ($c)
   {
      echo $c;
   }
}
register_shutdown_function (array ('a', 'b'), '111');
//显示 111
?>
 

register_tick_function函数和unregister_tick_function函数必须要和declare流程控制机制合并使 用,那么就先了解一下declare和tick:

declare (directive){
statement
}
 

Tick 是一个在 declare 代码段中解释器每执行 N 条低级语句就会发生的事件。N 的值是在 declare 中的 directive 部分用 ticks=N 来指定的。在每个 tick 中出现的事件是由 register_tick_function() 来指定的。举例如下:

<?
function foo($str) {
static $i = 0;
print "$str: $i<br>";
$i++;
}
register_tick_function("foo", "count");
declare (ticks = 6) {
for($i=0; $i<20; $i++) {
echo "$i<br>";
}
}
?>
 

在这个例子中的declare(ticks = N){statement}流程控制里面,每执行6行(ticks = 6)代码,就需要运行一次foo()函数,通过更改ticks的值,我们可以获得不同的运行结果。

 

 

 

 

分享到:
评论

相关推荐

    9个必须知道的实用PHP函数和功能

    在PHP编程中,了解并熟练掌握一些实用的函数和功能对于提高开发效率和...在日常开发中,不断探索和学习新的函数和功能,可以拓宽编程思路,解决更多实际问题。记得经常查阅PHP官方文档,它是最权威且全面的参考资料。

    PHP 项目开发全程实录-源码.rar

    PHP(Hypertext Preprocessor)是一种广泛使用的开源脚本语言,特别适合于Web开发,能够嵌入到HTML中,为网页提供动态内容。它具有易学易用、跨平台、丰富的库支持和高效执行等优点,使得PHP成为众多开发者首选的...

    ThinkPHP5.1项目后台功能开发源码_PHP_CSS_下载.zip

    例如,通过Db类进行数据库查询,使用validate进行数据验证,以及利用Middleware实现中间件功能,这些都是ThinkPHP5.1中的核心编程技术。 4. CSS样式设计: 后台界面的美观性和用户体验离不开CSS的布局和样式设置。...

    PHP实例开发源码-孤雨在线php文件管理系统.zip

    在本文中,我们将深入探讨PHP编程语言在构建此类系统中的应用,并介绍相关的核心技术和设计思路。 PHP,全称“Hypertext Preprocessor”(超文本预处理器),是一种广泛用于Web开发的开源脚本语言。它的主要优点...

    PHP小项目100例

    《PHP小项目100例》是一个集合了众多PHP编程实践案例的学习资源,旨在帮助开发者巩固PHP基础...在学习过程中,应仔细分析每个项目的设计思路,理解代码逻辑,并尝试自己编写类似的功能,这样能更有效地提升编程技能。

    php_igbinary.dll

    使用igbinary非常简单,只需将序列化和反序列化函数从默认的`serialize`和`unserialize`替换为`igbinary_serialize`和`igbinary_unserialize`即可。这样,数据在存储和网络传输时都会自动采用igbinary格式。 6. **...

    PHP名词库 [转自百度文库]

    与之前的版本相比,PHP5更加强大且稳定,支持更多的现代Web开发需求。 #### Cookie Cookie是一种在用户浏览器中存储的小型文本文件,用于跟踪用户的偏好设置或身份验证信息。PHP通过内置函数如`setcookie()`来创建...

    基于PHP的嘉缘人才系统php版GBK源码.zip

    在PHP语言的环境中,嘉缘人才系统利用了其强大的面向对象编程能力,以及丰富的函数库,如MySQLi或PDO用于数据库操作,session和cookie来处理用户会话,还有可能使用了Smarty等模板引擎来实现视图层与逻辑层的分离,...

    多个论坛收藏的各种各样的php分页类

    标题“多个论坛收藏的各种各样的php分页类”提示我们,这个压缩包中包含的是不同开发者在论坛上分享的PHP分页类和函数,这些资源可能是开源的,具有高度的实用性和可定制性。 描述中的“从phpchina等论坛收藏的各种...

    PHP实例开发源码—8tupian图片加密平台.zip

    Imagick则提供了更强大的图像处理功能,支持更多图像格式。 4. **加密算法**:此项目的核心是图片的加密和解密算法。PHP中有许多加密函数,如`md5()`、`sha1()`、`password_hash()`等,这些函数可用于生成哈希值。...

    李炎诙php第三季项目源码

    【PHP技术概述】 PHP(Hypertext Preprocessor)是一种广泛使用的开源服务器端脚本语言,尤其适用于Web开发,...通过深入学习和实践这些知识点,可以提升PHP编程技能,更好地理解和复用源码中的设计思路和技术实现。

    ThinkPHP6.0完全开发手册-03201220.pdf

    - 支持更多PSR规范。 - 多应用支持。 - ORM组件独立。 - 改进的中间件机制。 - 更强大和易用的查询。 - 全新的事件系统。 - 支持容器invoke回调。 - 模板引擎组件独立。 - 内部功能中间件化。 - SESSION...

    0DAY挖掘巧思-代码执行之漏洞审计-漏洞银行大咖面对面35-水清云影

    例如,在`preg_replace`函数中使用`/e`修饰符时,如果替换字符串是用户可控的,那么就有可能导致代码执行漏洞。 **五、修复方案** 针对以上提到的各种漏洞,水清云影还提供了修复建议: 1. **白名单限制**:限制...

    PHP实例开发源码—LimeSurvey php问卷调查系统正式版.zip

    LimeSurvey是一款基于PHP开发的开源在线问卷调查系统,它提供了强大的功能,允许用户无需编程知识即可创建、管理和发布各种类型的问卷。这个压缩包“PHP实例开发源码—LimeSurvey php问卷调查系统正式版.zip”包含的...

    PHP面试笔记.pdf

    - **区别**: TP包含更多的框架特性,而Smarty则专注于模板的高效渲染。 #### 二、Web服务器对比 **1. Apache与Nginx** - **轻量级**: Nginx在内存使用和资源消耗上优于Apache。 - **并发处理**: Nginx采用异步非...

    PHP Web应用开发入门体验手记.doc

    编程过程中,思路比代码更重要。良好的编程习惯、对英语的掌握以及持续实践是快速入门的关键。通过看教程、读程序、验证代码,不断进行项目实践,才能提升编程技能。 在Web应用开发中,追求“大道至简”,使用轻量...

    精通PHP+MySQL应用开发书中源码

    在本书的源码中,你可以找到关于PHP函数、类、对象、错误处理、文件操作、网络编程等多个方面的实践应用示例。 MySQL则是一款关系型数据库管理系统(RDBMS),以其高性能、高可靠性及易于管理而受到开发者的青睐。...

    php提取网页正文内容的例子__2.docx

    此外,还可以考虑使用开源库,如PHP的`DOMDocument`和`DOMXPath`,或者第三方库如`SimpleHTMLDOM`,它们提供了更强大的HTML解析和操作功能。例如,`DOMXPath`可以方便地查询和修改DOM树,而`SimpleHTMLDOM`则简化了...

    基于PHP的得推项目管理系统源码.zip

    【标题】: 得推项目管理系统是基于PHP开发的一款高效、灵活的项目管理软件,它提供了全面的项目跟踪和控制功能,旨在帮助团队更有效地管理项目进度、任务分配以及资源调度。这款源码的可用性使得用户可以根据自身...

Global site tag (gtag.js) - Google Analytics