> 백엔드 개발 > PHP 튜토리얼 > php 匿名函数 use 怎么用?

php 匿名函数 use 怎么用?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-06-06 20:09:36
원래의
1100명이 탐색했습니다.

文档中有这么个例子 匿名函数

闭包可以从父作用域中继承变量。 任何此类变量都应该用 use 语言结构传递进去

1

2

3

4

5

6

7

8

9

10

11

$message = 'hello';

// 没有 "use"

$example = function () {

    var_dump($message);

};

echo $example();

// 继承 $message

$example = function () use ($message) {

    var_dump($message);

};

echo $example();

로그인 후 복사
로그인 후 복사

这里的use作用机制是什么?看不太懂,求解!

回复内容:

文档中有这么个例子 匿名函数

闭包可以从父作用域中继承变量。 任何此类变量都应该用 use 语言结构传递进去

1

2

3

4

5

6

7

8

9

10

11

$message = 'hello';

// 没有 "use"

$example = function () {

    var_dump($message);

};

echo $example();

// 继承 $message

$example = function () use ($message) {

    var_dump($message);

};

echo $example();

로그인 후 복사
로그인 후 복사

这里的use作用机制是什么?看不太懂,求解!

这里 use的机制并不仅仅是匿名函数,更加明确的定义叫闭包,而闭包一般是要通过匿名函数实现。

这里的use实际上就是将全局的$message拷贝到局部函数中,所以很类似于global,不过和global不同的是:

use时:当你在函数中对$message更改的时候不会影响到全局的那个$message,也就是说使用use实际上是拷贝一份变量到函数中。

global时:正相反,在函数中对$message更改的时候会影响到全局的那个$message

更加具体的内容,可以看我的这篇博客PHP的匿名函数和闭包

就是相当于 global 吧

1

2

3

4

<code>function() {

    global $message;

    var_dump($message);

}</code>

로그인 후 복사

如果你看匿名函数觉得陌生的话,你不妨看下这段代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<code>$message = 'hello';

// 没有 "use"

$example = function () {

    var_dump($message);

};

echo $example();

// 继承 $message

$example = function ($message) {

    global $message;

    var_dump($message);

};

 

echo $example($message);

</code>

로그인 후 복사

输出的结果和use 机制下的匿名函数是一样的,作用都是“把父作用域的变量弄到子作用域中使用”。
之所以需要特别声明use 或者 global,是因为PHP的函数中变量的作用域是局部的,不像JavaScript是允许一层一层往外层作用域找

관련 라벨:
php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿