博客列表 >0929 匿名函数 闭包,命名空间及类与对象的定义与引用 20190929 2000-2200

0929 匿名函数 闭包,命名空间及类与对象的定义与引用 20190929 2000-2200

没有人的夏天的博客
没有人的夏天的博客原创
2019年10月11日 18:14:25627浏览

1,匿名函数的使用

匿名函数是指没有定义函数名称的 函数, 通常是一次性使用,或是在固定条件下使用,不需要指定名称就是可以直接使用。

// 匿名函数的应用场景1  向变量赋值

实例

// 以下是连接几个变量的信息 定义数据库连接信息
// 用剩余参数接收数组参数
$v = function (...$b) {
    // 初始化变量为空
    $c = "";
    foreach ($b as $va) {
        // 循环数组参数
        $c .= $va;
    }
    return $c;
};
// 固定顺序的数组变量
$a = ['mysql', ':host=', '127.0.0.1', ';dbname=', 'sysinfo'];
// 向函数传递数组参数
echo ($v(...$a));

运行实例 »

点击 "运行实例" 按钮查看在线实例


// 匿名函数的应用场景2  回调参数使用
// 做为回调参数使用,是在引用时使用,而不是在定义时使用
// 在调用函数中设计调用方式及参数指引,可以使用 call_user_func设计参数指引,或系统自动格式转换
// 设计返回方式


实例

// 定义一个函数,将其中一个参数 $d 定义为一个函数
function sm($a, $c, $d)
{
    // 声明$d为一个函数,参数为$a和$c
    call_user_func($d, $a, $c);
    return $d($a, $c);
}

// 做为参数的函数在调用时设计具体内容
echo sm(3, 5, function ($a, $b) {
    // 返回两个参数的连接值
    return $b . $a;
});

// 以上输出  53

echo '<br>';

运行实例 »

点击 "运行实例" 按钮查看在线实例


//匿名函数的应用场景3  获取父元素变量  闭包的使用

//闭包使用父元素的变量做为参数, 自身的不再定义参数,

实例

function dn(...$b)
{
    $c = ':host=';
    $d = ';dbname=';
    // 做为闭包使用 使用use关键字,use内为要使用是父元素变量
    return function () use ($c, $d, $b) {
        // 拼接字符串
        return ($b[0] . $c .  $b[1] . $d . $b[2]);
    };
}

$a = ['mysql', '127.0.0.1', 'sysinfo'];
echo dn(...$a)();

// 以上输出 mysql:host=127.0.0.1;dbname=sysinfo

运行实例 »

点击 "运行实例" 按钮查看在线实例



2 命名空间

// 命名空间,定义作用域和引用路径

// 命名空间内的元素,只在当前空间内有效,外部引用时需要指定空间名称

// 通常一个文件一个空间,名称唯一

// 命名空间对自定义类,常量,函数可直接引用,对变量无法直接引用,

// 使用命名空间可以释放名称定义用语及定义引用路径

// 跨目录引用需要先引用目标空间的文件到当前文件中,再引用命名空间,

// 命名空间定义通常放在文件的第一行

实例

namespace _09291;
function sum($a, $b)
{
    return $a + $b;
}
namespace _09292;
function sum($a, $b)
{
    return $a * $b;
}
namespace _09293;
function sum($a, $b)
{
    return $a / $b;
}
// 不同空间内的同名函数及相同参数计算结果不同,引用了不同的函数体
echo \_09291\sum(2,3);
echo '<br>';
echo \_09292\sum(2,3);
echo '<br>';
echo \_09293\sum(2,3);

运行实例 »

点击 "运行实例" 按钮查看在线实例


3,类与对象

// class是类的定义符

// new 是类的实例化 定义符 ,  类的一个实例就是类的一个对象;

// public是公共属性定义符 

//  -> 是对象 引用类中的成员 的 指向符

// 类内部的成员包括: 属性(变量)和 方法(函数) 


实例

namespace _092921;
// class是类的定义符
class Cname
{
    // public是公共属性定义符  
    // 类内部的成员包括: 属性(变量)和 方法(函数) 
    // 以下为类的属性  属性可以赋值也可以不赋值,但不能是表达式及变量;
     // 动态变量可以方法中设计引用
    public $name = 'cnnc';
    public $country = 'china';
}

// 创建类的实例化 定义符 new , 类的一个实例就是类的一个对象;
$company = new Cname();

// 对象 引用类中的成员 用 属性指向符 ->
echo "公司名称: " . $company->name . '<br>';
echo "所属国家: " . $company->country;

// 显示结果是:
// 公司名称: cnnc
// 所属国家: china

运行实例 »

点击 "运行实例" 按钮查看在线实例



声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议