无法在函数内访问变量作为变量

时间:2015-05-20 09:28:37

标签: php

我无法将函数中的变量作为变量访问:

public function fetchWhere($params) {
  $resultSet = $this->select(function(Select $select) {
    $select->where($params);
  });
..

我收到错误:

Undefined variable: params

3 个答案:

答案 0 :(得分:3)

然后你需要compile ‘org.bytedeco:javacv:+’ compile group: ‘org.bytedeco.javacpp-presets’, name: ‘opencv’, version: ‘2.4.10–0.10', classifier: ‘android-arm’ compile group: ‘org.bytedeco.javacpp-presets’, name: ‘ffmpeg’, version: ‘2.5.1–0.10', classifier: ‘android-arm’ 构造来使变量在函数内可用/可见:

use

你可以传递更多的变量。只需使用逗号public function fetchWhere($params) { $resultSet = $this->select(function(Select $select) use($params) { $select->where($params); }); } 分隔其他变量,例如,

答案 1 :(得分:2)

  

闭包还可以从父作用域继承变量。必须将任何此类变量传递给use语言构造。   这是因为范围可变。试试 -

$resultSet = $this->select(function(Select $select) use($params) {
   $select->where($params);
});
  

从父作用域继承变量与使用全局变量不同。全局变量存在于全局范围内,无论执行什么功能,它都是相同的。闭包的父作用域是声明闭包的函数(不一定是从中调用它的函数)。

答案 2 :(得分:1)

使用“use”,可以将变量用作范围中的全局变量:

public function fetchWhere($params) {
  $resultSet = $this->select(function(Select $select) use($params) {
    $select->where($params);
  });
..