博主信息
博文 48
粉丝 0
评论 0
访问量 50143
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
匿名函数,命名空间,类的初学--2019年09月28日20时00分
小星的博客
原创
995人浏览过

匿名函数

当一个函数没有名字时,就是一个匿名函数。

匿名函数有三种应用场景:

1. 作为一个值来使用

$fun = function ($a, $b) {
    return $a + $b;
};
echo $fun(3, 4);

2. 作为回调函数

这里以 排序函数为例:

$arr = [5,32,6,7,23,90];
usort($arr, function ($a, $b) {
    return $a - $b;
});
print_r($arr);

3. 获取父作用域中变量

一般函数中访问外部变量需要使用 global ,但是匿名函数有其独特的语法

$name = 'zmx';
$sex = 23;
$fas = function() use ($name,$sex) {
    return $sex;
};

$fa = function() use ($name){
    return $name;
};

当匿名函数用于获取父作用域时,就形成了闭包。

//获取父函数中变量,就是闭包
function fun1() {
    $age = 19;
    // 看到这种函数中返回函数的形式一般就是 php的闭包
    return function() use ($age) {
        return $age;
    };
}
echo fun1()(); // 因为 fun1() 返回的是一个函数,所以需要再执行一次。


命名空间

命名空间是一种封装事物的方法,其实就是将 函数,类等东西一块包起来隔离起来,防止重名冲突。有点像计算机的文件目录,在同一个目录不能存在同名文件,但是不同目录下却能有同名文件,这个父目录其实就有点像命名空间,担任了隔离的动能。

只要记住:命名空间主要就是 解决 类/函数/常量之间的命名冲突的。

命名空间有两种:全局空间(默认空间)用 \ 表示自定义空间

这里先创建两个php文件,分别使用不同命名空间

<?php
namespace space1;
function sum() {
  return '28';
}
<?php
namespace space2;
include __DIR__.'/space1.php';

function sum() {
  return 90;
}
// 默认调用当前命名空间的 sum;
echo sum();

// \ 代表全局空间,默认空间,根空间, 如果当前命名空间是全局空间时,可以省略
//echo \sum();

//查找局部空间,默认是从当前空间开始查找
echo \space2\sum().'<br/>';
echo \space1\sum();

// 这样写会报错, 这里 其实是查找的 space2\space2\sum(); 找不到
//  只有从 根目录上开始查找能找到 sapce2 空间
echo space2\sum();

// 使用 namespace 指当前命名空间
echo namespace\sum();

   注:命名空间的应用对象是  函数/常量/类/接口,因为这些是不允许重名的


类是实现代码封装和重用的机制。

1. 创建一个类

<?php
namespace space4;

class Phone
{
  public $product = 'phone'; // php中属性是前要加上 访问控制
  public $price = '200';
}

2. 将类实例化生成一个对象

$phone1 = new Phone();

3. 访问类中成员

echo $phone1->price; // 注意;访问类中属性时不需要加 $

类与对象是紧密联系的:

对象是类的实例,类是对象的模板。

( 比喻:类就像车间中的模具,对象就像用模具生产出来的模型 )

总结

  • 匿名函数的使用场景:作为值调用,回调(用的比较多),访问父作用域变量。

  • 命名空间其实是一种隔离机制,主要应用对象有: 函数/常量/类/接口,因为它们都是不允许重名的。

  • 类既然是一种代码复用的手段,就说明就是用来多次使用的,是一个抽象的东西;对象就是经过 类 的实例化生产的出来的东西,是具体的,不要搞混了。

批改状态:合格

老师批语:类与对象,命名空间是现代编程的基础
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学