试图在类方法回调中运行类方法。
class.php
<?php
namespace user;
class User {
public function showUserAge( $age = 10 ) {
echo $age;
}
public function showUserName( $name = 'arif', $fn ) {
echo $name;
call_user_func( $fn );
}
}index.php
<?php
use user\User;
require './class.php';
$use = new User();
$use->showUserName( 'ARIF', function () {
$use->showUserAge();
} );错误:
警告:第9行中C:\xampp\htdocs\class\index.php中未定义的变量$use致命错误:未定义错误:调用C:\xampp\htdocs\class\index.php:9堆栈跟踪中null上的成员函数showUserAge():#0内部函数:{闭包}() #1 C:\xampp\htdocs\class\class.php(9):call_user_func(Object(闭包)) #2 C:\xampp\htdocs\class\index.php(10):user\User->showUserName('ARIF',对象(闭包) #3 {main}在第9行的C:\xampp\htdocs\class\index.php中抛出。
谢谢!
发布于 2021-06-29 16:05:52
与javascript不同,PHP不会自动在lambda函数中包含外部变量--您需要使用"use“语法显式列出要允许的变量。
https://www.php.net/manual/en/functions.anonymous.php
例如:
$user = new User();
$user->showUserName( 'ARIF', function () use ($user) {
$user->showUserAge();
} );发布于 2021-06-29 16:20:27
试着做
class User {
public function showUserAge( $age = 10 ) {
echo $age;
}
public function showUserName( $name = 'arif', $fn ) {
echo $name;
if( method_exists( $this, $fn ) ) {
$this->$fn();
}
}
}
$use = new User();
$use->showUserName( 'ARIF', "showUserAge" );https://stackoverflow.com/questions/68182146
复制相似问题