zoukankan      html  css  js  c++  java
  • PHP学习日记 函数

    可变函数

      PHP支持可变函数的概念。所以如果一个变量后面有圆括号“()”,PHP将寻找与变量值同名的函数,并尝试执行此函数,可变函数可以用来实现回调函数、函数列表等。可变函数不能用于echo、print、unset、isset、array等等类似的语言结构,需要使用自己的包装函数来将这些结构作为可变函数。可变函数还可以用于对象方法的调用。

    <?php
    function foo(){
        echo "foo
    ";
    }
    function bar(){
        echo "bar
    ";
    }
    
    $func="foo";
    $func();
    $func="bar";
    $func();
    $func="echo";
    $func("echo");
    ?>


            PHP5.4起,如果数组中为合法调用,则可以做为可变函数,用于调用类中方法时使用,数组长度必须为2,第一个值为类名或其他合法形式,第二值为要调用的方法名。PHP7.0起支持ClassName::methodName为可变函数。

    <?php
    class Foo
    {
        static function bar()
        {
            echo "bar
    ";
        }
        function baz()
        {
            echo "baz
    ";
        }
    }
    
    $func = array("Foo","bar");
    $func(); // prints "bar"
    $func = array(new Foo, "baz");
    $func(); // prints "baz"
    $func = "Foo::bar";
    $func(); // prints "bar" as of PHP 7.0.0; prior, it raised a fatal error
    ?>


            内置函数
            PHP超全局变量PHP 有很多标准的函数和结构。还有一些函数需要和特定地 PHP 扩展模块一起编译,否则在使用它们的时候就会得到一个致命的“未定义函数”错误。有很多核心函数已包含在每个版本的 PHP 中如字符串和变量函数。调用 phpinfo() 或者 get_loaded_extensions() 可以得知 PHP 加载了那些扩展库。同时还应该注意,很多扩展库默认就是有效的。
            匿名函数
            匿名函数PHP5.3新增,也叫闭包函数,是一个临时创建的没有指定名称的函数,经常用做回调函数参数的值。匿名函数是通过闭包类Closure来实现的。PHP会自动把匿名函数转换为Closure对象的实例。把一个Closure对象赋值给一个变量与普通的变量赋值是一样的。通过使用use语言结构可以匿名函数可以从父作用域继承变量。继承变量有两种方式,一种是继承变量的值,一种是变量的引用。此外,匿名函数还可以接受普通的参数。匿名函数的父作用域是定义该匿名函数的函数。

    <?php
    $message = 'hello';
    // 没有 "use"
    $example = function () {
    var_dump($message);
    };
    //值为null
    $example();
    
    // 使用"use" 继承 $message
    $example = function () use ($message) {
    var_dump($message);
    };
    //值为hello
    $example();
    
    $message = 'world';
    //值传递,继承变量的值在方法定义时被确定,所以输出为hello
    $example();
    
    //引用传递
    $example = function () use (&$message) {
    var_dump($message);
    };
    //参数值的修改会传递到匿名函数内,所以输出为World
    $message = 'World';
    $example();
    //
    $example = function ($arg) use (&$message) {
    var_dump($arg.$message);
    };
    $example("hello");
    ?>
            PHP5.4起,$this可在匿名函数中使用<?php
    class Test
    {
    public function testing()
    {
    return function() {
    var_dump($this);
    };
    }
    }
    
    $object = new Test;
    $function = $object->testing();
    $function();
    ?>


            PHP7.1起,匿名函数继承的变量不能是超全局变量、$this以及与函数参数名同名的变量。
            静态匿名函数
            PHP5.4起,当在类的上下文中声明匿名函数,当前类会自动绑定到匿名函数,使$this变量在函数中可用,如果不想自动绑定当前类,就需要声明为静态匿名函数。

    <?php
    class Foo{
    function foo(){
    $func=static function(){
    var_dump($this);
    };
    return $func();
    }
    }
    $foo=new Foo;
    $foo->$foo();
  • 相关阅读:
    /etc/sysctl.conf 控制内核相关配置文件
    python 并发编程 非阻塞IO模型
    python 并发编程 多路复用IO模型
    python 并发编程 异步IO模型
    python 并发编程 阻塞IO模型
    python 并发编程 基于gevent模块 协程池 实现并发的套接字通信
    python 并发编程 基于gevent模块实现并发的套接字通信
    python 并发编程 io模型 目录
    python 并发编程 socket 服务端 客户端 阻塞io行为
    python 并发编程 IO模型介绍
  • 原文地址:https://www.cnblogs.com/GHzcx/p/10397473.html
Copyright © 2011-2022 走看看