小编Hen*_*c17的帖子

如何创建一个将消息推送到用户特定帐户的通知系统?

我正在尝试将函数存储在文件中并在需要时提取以运行,但我找不到更好的方法来执行此操作。

这是我尝试过的:

function store_callable(string $func)
{
    writefile($func);
}
eval(readfile());
Run Code Online (Sandbox Code Playgroud)

我首先关心的是参数的类型$func。我期望仅接收callable作为参数,但我找不到将 PHP 可调用转换为字符串以保存的方法。

其次,虽然eval()这里使用 来运行保存的函数,但我想知道是否有更好的方法来做到这一点,尽管似乎没有。

我不认为这是一种序列化,但它们似乎有相似之处,所以我仍然添加了标签。


编辑:

我最初的想法是创建一个通知系统,将消息推送到用户的特定帐户。但是,某些通知仅专门推送到一台设备或 IP。这意味着我需要一个过滤功能。我实际上可以通过使用像这样的新属性来完成此操作,restricted-to但我想filter-function在通知对象中创建一个更通用的字段,该字段返回一个布尔值,并让系统决定是否在此负载上推送通知。

编辑2:

我实际上可以直接将它们编码在PHP文件中,但这会变得混乱,因为不同的通知有不同的过滤器来决定是否推送它们,我可以给你一个例子:

new Notification("message");
class Notification
{
    public function push_or_not()
    {
        if($this->isabout== "login" && checkIP())
        {
            \\ sth
        }
        else if() 
        else if()
        //and so on
    }
}
Run Code Online (Sandbox Code Playgroud)

这样实际上可以运行并避免安全风险。但这还不够普遍。这意味着我需要if-else首先编辑此处,并type在此处创建一个新属性。

我只是问直接存储在通知数据中的初始更通用的过滤器函数(因为我可以在每个通知中定义它,但在这里我可以添加类型并将其与类型相关联)是否更好(以及任何改进)或这里的后一个更好。

这里似乎没有太大的安全风险,因为这里的代码与用户输入无关。

php

-1
推荐指数
1
解决办法
112
查看次数

标签 统计

php ×1