首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在php中调用内部方法

如何在php中调用内部方法
EN

Stack Overflow用户
提问于 2021-06-29 15:59:55
回答 2查看 46关注 0票数 0

试图在类方法回调中运行类方法。

class.php

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<?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中抛出。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-29 16:05:52

与javascript不同,PHP不会自动在lambda函数中包含外部变量--您需要使用"use“语法显式列出要允许的变量。

https://www.php.net/manual/en/functions.anonymous.php

例如:

代码语言:javascript
复制
$user = new User();

$user->showUserName( 'ARIF', function () use ($user) {
    $user->showUserAge();
} );
票数 1
EN

Stack Overflow用户

发布于 2021-06-29 16:20:27

试着做

代码语言:javascript
复制
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" );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68182146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档