zoukankan      html  css  js  c++  java
  • php 自定义函数大全

    1. call_user_func和call_user_func_array

    以上两个函数以不同的参数形式调用函数。见如下示例:
    <?php

    class demo
    {
    public static function action1()
    {
    echo "This is demo::action1.<br>";
    }

    public function action2()
    {
    echo "This is demo::action2.<br>";
    }

    public function actionWithArgs($arg1, $arg2)
    {
    echo 'This is demo::actionWithArgs with ($arg1 = ' . $arg1 . ' and $arg2 = ' . $arg2 . ").<br>";
    }
    }

    $demo = new demo();
    call_user_func(array("demo", "action1"));
    call_user_func(array($demo, "action2"));
    call_user_func(array($demo, "actionWithArgs"), "hello", "world");
    call_user_func_array(array($demo, "actionWithArgs"), array("hello2", "world2"));


    运行结果如下:

    This is demo::action1.
    This is demo::action2.
    This is demo::actionWithArgs with ($arg1 = hello and $arg2 = world).
    This is demo::actionWithArgs with ($arg1 = hello2 and $arg2 = world2).

    2. func_get_args、func_num_args和func_get_args

    这三个函数的共同特征是都很自定义函数参数相关,而且均只能在函数内使用,比较适用于可变参数的自定义函数。他们的函数原型和简要说明如下:
    int func_num_args (void) 获取当前函数的参数数量。
    array func_get_args (void) 以数组的形式返回当前函数的所有参数。
    mixed func_get_arg (int $arg_num) 返回当前函数指定位置的参数,其中0表示第一个参数。

    <?php
    function demoA()
    {
    $numOfArgs = func_num_args();
    $args = func_get_args();
    echo "The number of args in demoA is " . $numOfArgs . "<br>";
    for ($i = 0; $i < $numOfArgs; $i++) {
    echo "The {$i}th arg is " . func_get_arg($i) . "<br>";
    }
    echo "-------------------------------------------<br>";
    foreach ($args as $arg) {
    echo "$arg<br>";
    }
    }

    demoA('hello', 'world', '123456');

    运行结果如下:

    The number of args in demoA is 3
    The 0th arg is hello
    The 1th arg is world
    The 2th arg is 123456
    -------------------------------------------
    hello
    world
    123456

    3. register_shutdown_function

    函数原型和简要说明如下:

    void register_shutdown_function (callable $callback [, mixed $parameter [, mixed $... ]]) 在脚本结束之前或者是中途调用exit时调用改注册的函数。另外,如果注册多个函数,那么他们将会按照注册时的顺序被依次执行,如果其中某个回调函数内部调用了exit(),那么脚本将立刻退出,剩余的回调均不会被执行。

    <?php
    function myShutdown($arg1, $arg2)
    {
    echo '$arg1 = ' . $arg1 . ', $arg2 = ' . $arg2 . "<br>";
    }

    if (function_exists('myShutdown')) {
    print "myShutdown function exists now.<br>";
    }

    register_shutdown_function('myShutdown', 'Hello', 'World');
    print "This test is executed.<br>";
    exit();
    echo "This comments cannot be output.<br>";

    运行结果如下:

    myShutdown function exists now.
    This test is executed.
    $arg1 = Hello, $arg2 = World

  • 相关阅读:
    20172306 2018-2019-2 《Java程序设计与数据结构》第七周学习总结
    20172306 2018-2019-2 《Java程序设计与数据结构》第六周学习总结
    网页图片
    20172302 2018-2019-1《程序设计与数据结构》课程总结
    Do-Now—团队Scrum 冲刺博客五
    Do-Now—团队Scrum 冲刺博客二
    哈夫曼编码测试
    20172302 《Java软件结构与数据结构》实验三:查找与排序实验报告
    团队作业第一周
    20172302 《Java软件结构与数据结构》第九周学习总结
  • 原文地址:https://www.cnblogs.com/zqifa/p/php-11.html
Copyright © 2011-2022 走看看