为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 魔术常量 - 自动传递给函数?

PHP 魔术常量 - 自动传递给函数?

PHP
波斯汪 2021-11-13 10:30:02
我编写了一个简单的访问控制系统,它读取一组访问字符串,并根据结果返回 true 或 false。我会这样称呼它(例如在list_user_data类的方法中User):`if (current_user_can(__CLASS__, __METHOD__)) {      ...      }在里面,它检查当前用户是否有权访问list_user_dataclass 中的方法User。它有效,但我觉得很烦人,我总是必须在通话中指定__CLASS__和__METHOD__。有没有办法从调用函数的current_user_can函数中获取这些值,以便我可以简单地调用而不必传递魔术常量?current_user_can()我的代码按原样工作,但我认为它可以改进。这可能吗?
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

debug_backtrace的返回值应该返回第二个条目(索引 1)中的调用函数,例如:


<?php


function current_user_can()

{

    $backtrace = debug_backtrace(false, 2);

    // ToDo: Check if $backtrace[1] (and especially the class-key of that) actually exist...

    //       It should always (although the class key might not if this function isn't called from within a class), since this function is being called

    //       but it's still a good habbit to check array keys before accessing the array

    $callerClass = $backtrace[1]["class"];

    $callerMethod = $backtrace[1]["function"];


    // ToDo: implementation of check, in this example $callerClass would be "User" and $callerMethod would be "list_user_data"


    return true;

}


class User {

    public function list_user_data() {

        if (current_user_can())

        {


        }

    }

}


$user = new User();

$user->list_user_data();


查看完整回答
反对 回复 2021-11-13
  • 1 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信