这里有新鲜出炉的 PHP 面向对象编程,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
这篇文章主要介绍了 PHP 中功能强大却很少使用的函数, 结合实例形式总结分析了 php 中非常实用的几个函数, 包括函数的调用、注册、调用、判断等操作技巧, 需要的朋友可以参考下
本文实例讲述了 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 的值,我们可以获得不同的运行结果。
希望本文所述对大家 PHP 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0809/341346.html