zoukankan      html  css  js  c++  java
  • 速战速决 (3)

    [源码下载]


    速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数



    作者:webabcd


    介绍
    速战速决 之 PHP

    • 函数基础
    • 函数参数
    • 函数返回值
    • 可变函数
    • 匿名函数
    • 闭包函数
    • 回调函数



    示例
    1、函数的相关知识点 1(基础)
    function/function1.php

    <?php
    /**
     * 函数的相关知识点 1(基础)
     */
    
    // 可以在相关的 function 声明语句之前调用该函数
    f1();
    function f1()
    {
        echo "f1";
        echo "<br />";
    }
    
    
    // 这里调用 f2() 就错误了
    // f2();
    $b = true;
    if ($b)
    {
        function f2() // 条件成立才会声明此函数
        {
            echo "f2";
            echo "<br />";
        }
    }
    f2();
    
    
    // 这里调用 f4() 就错误了(因为 f4 的声明是在 f3 的内部,所以要先调用 f3 才能再调用 f4)
    // f4();
    f3();
    f4();
    function f3()
    {
        echo "f3";
        echo "<br />";
    
        function f4()
        {
            echo "f4";
            echo "<br />";
        }
    }


    2、函数的相关知识点 2(函数参数)
    function/function2.php

    <?php
    /**
     * 函数的相关知识点 2(函数参数)
     */
    
    // 带参数的函数
    f1("webabcd");
    function f1($name)
    {
        echo "hello " . $name; // output: hello webabcd
        echo "<br />";
    }
    
    
    // 带参数的函数(参数是引用类型)
    $name = "webabcd";
    f2($name);
    function f2(&$n) // 参数是引用类型
    {
        echo "hello " . $n; // output: hello webabcd
        echo "<br />";
    
        $n = "wanglei"; // $n 是引用类型,其与全局变量 $name 指向的内容是一样的
    }
    echo "hello " . $name; // output: hello wanglei
    echo "<br />";
    
    
    // 带参数的函数(参数可以指定默认值)
    f3("hello "); // output: hello webabcd
    f3("hello ", "wanglei"); // output: hello wanglei
    function f3($p1, $p2 = "webabcd") // 参数的默认值只能是常量,不能是表达式
    {
        echo $p1 . $p2;
        echo "<br />";
    }


    3、函数的相关知识点 3(函数返回值)
    function/function3.php

    <?php
    /**
     * 函数的相关知识点 3(函数返回值)
     */
    
    // 带返回值的函数
    $result1 = f1("webabcd");
    echo $result1;
    echo "<br />";
    function f1($name)
    {
        return "hello " . $name; // output: hello webabcd
    }
    
    
    // 从函数返回以一个引用(函数的声明和调用都要加 &)
    $result2 = &f2();
    echo $result2;  // output: 1
    echo "<br />";
    $result2 = 100; // $result2 是个引用,指向 $i 所指向的内容,所以此句之后 $i 的值为 100
    $result3 = &f2();
    echo $result3;  // output: 101
    echo "<br />";
    function &f2() // 此函数会返回一个引用(函数的声明和调用都要加 &)
    {
        static $i = 0;
        $i ++;
    
        return $i;
    }


    4、函数的相关知识点 4(可变函数,匿名函数,闭包函数)
    function/function4.php

    <?php
    /**
     * 函数的相关知识点 4(可变函数,匿名函数,闭包函数)
     */
    
    // variable function(可变函数),将变量的值作为函数名
    function f1()
    {
        echo "f1"; // output: f1
        echo "<br />";
    }
    function f2()
    {
        echo "f2"; // output: f2
        echo "<br />";
    }
    $func = 'f1';
    $func();
    $func = 'f2';
    $func();
    
    
    // 匿名函数
    echo preg_replace_callback // output: userName
    (
        '~-([a-z])~',
        function ($match) // 匿名函数
        {
            return strtoupper($match[1]);
        },
        'user-name'
    );
    
    
    // 闭包函数
    // $f3("webabcd"); // 这是错误的,对于闭包函数来说,调用时要在声明语句的后面
    $f3 = function($name)
    {
        echo "hello " . $name; // output: hello webabcd
        echo "<br />";
    }; // 别忘了闭包函数的“;”
    $f3("webabcd");


    5、函数的相关知识点 5(回调函数)
    function/function5.php

    <?php
    /**
     * 函数的相关知识点 5(回调函数)
     */
    
    // 用于演示如何回调(callback)函数
    function myCallbackFunction()
    {
        return 'myCallbackFunction';
    }
    
    class MyClass1
    {
        // 用于演示如何回调(callback)实例方法
        public function myMethod1()
        {
            echo 'MyClass1 myMethod1';
            echo '<br />';
        }
    
        // 用于演示如何回调(callback)类方法
        public static function myMethod2()
        {
            echo 'MyClass1 myMethod2';
            echo '<br />';
        }
    }
    
    // 通过 call_user_func 调用指定的函数
    echo call_user_func('myCallbackFunction');
    echo '<br />';
    
    $obj1 = new MyClass1();
    // 通过 call_user_func 调用指定对象的指定方法
    call_user_func(array($obj1, 'myMethod1'));
    
    // 通过 call_user_func 调用指类的类方法
    call_user_func(array('MyClass1', 'myMethod2'));
    
    // 通过 call_user_func 调用指类的类方法(PHP 5.2.3 或以上)
    call_user_func('MyClass1::myMethod2');



    OK
    [源码下载]

  • 相关阅读:
    微信公众号内调用微信支付
    transform-translate3d
    Ubuntu16.04 install apache-flume-1.7.0-bin.tar.gz
    Ubuntu16.04 install apache-hive-2.X.X-bin.tar.gz
    Ubuntu16.04 install mysql5.X
    Ubuntu16.04 install hadoop-2.8.1.tar.gz伪分布式配置
    Ubuntu16.04 install jdk-8u144-linux-x64.tar.gz
    入门VMware Workstation下的Debian学习之Vim简单使用(三)
    入门VMware Workstation下的Debian学习之基本命令(二)
    Ubuntu16.04 install android-studio-ide-162.4069837-linux
  • 原文地址:https://www.cnblogs.com/webabcd/p/5460527.html
Copyright © 2011-2022 走看看