标签: create-function

PHP 7.2 错误函数 create_function() 已弃用

将我的 VPS 升级到 PHP 7.2 后,我的网站出现以下错误:

PHP 已弃用:函数 create_function() 在 /home/nickname/public_html/framework/web/CHttpRequest.php 第 968 行中已弃用

该文件中的代码是:

usort($languages,create_function('$a,$b','if($a[0]==$b[0]) {return 0;} return ($a[0]<$b[0]) ? 1 : -1;'));
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决它,请帮助我,谢谢!

php create-function php-7.2

4
推荐指数
1
解决办法
4597
查看次数

将 create_function() 替换为 PHP8 的其他内容

所以我有一个以前工作正常的插件,但几天后它向我抛出一个错误:

PHP 致命错误:未捕获错误:调用未定义的函数 create_function()

经过一番搜索,我发现这是因为create_function()PHP 8 中已弃用。

现在导致问题的确切行是这样的:

$callback_2 = create_function('$matches', 'return "[" . str_replace("|", "", $matches[1]) . "]";');
Run Code Online (Sandbox Code Playgroud)

我尝试将其更改为:

$callback_2 = create_function('$matches', 'return "[" . str_replace("|", "", $matches[1]) . "]";');
Run Code Online (Sandbox Code Playgroud)

但这不起作用。因此,如果有人能指出我正确的方向,而且我对 PHP 很陌生,那就太好了。

php wordpress create-function php-8

4
推荐指数
1
解决办法
1万
查看次数

如何在不使用create_function的情况下重写示例?

在查看PHP的create_function时,它说:

如果您使用的是PHP 5.3.0或更高版本,则应使用本机匿名函数

我想重新创建与create_function使用相同的功能anonymous function。我看不到方法或正确方法。

本质上,如何更改以下内容,以便不再使用create_function但仍可以输入要使用自己的参数求值的自由格式公式?

$newfunc = create_function(
    '$a,$b',
    'return "ln($a) + ln($b) = " . log($a * $b);'
);
echo $newfunc(2, M_E) . "\n";
Run Code Online (Sandbox Code Playgroud)

示例取自PHP create_function页面。

注意:

看起来与上面的示例一样,我可以传入任意字符串,并为我编译它。我可以不使用来以某种方式做到这一点create_function吗?

php anonymous-function create-function

3
推荐指数
1
解决办法
2153
查看次数

MySQL-创建函数?修改 SQL 数据?

我即将CREATE FUNCTIONMySQL写一个,我想知道是否CREATE TEMPORARY TABLE计入 flag MODIFIES SQL DATA。函数不会修改任何永久表,只是修改临时表,它是为了优化目的而创建的。

我应该使用 flagMODIFIES SQL DATA还是仅使用READS SQL DATA?使用或标记的
真正好处是什么?MODIFIES SQL DATAREADS SQL DATA

mysql sql syntax create-function

2
推荐指数
1
解决办法
4837
查看次数

带有eval()的PHP preg_replace_callback()和create_function()不起作用

我正在尝试在Internet上部署我的网站,以便在真实环境中对其进行测试.它是某种文本编辑器,用户可以使用正则表达式和用户定义的回调函数.

我有一些preg_replace_callback()函数的问题.我的托管有早于5.3的PHP版本,我不能在我的代码中使用匿名函数(我在localhost上有PHP 5.4).所以我必须重写这部分代码(在localhost上正常工作)

$newString = preg_replace_callback(
                    '#' . $this->pattern . '#' . $this->modifiers,
                    function($match)
                    {
                        return eval('return ' . $this->replacement . ';');
                    },
                    $string);
Run Code Online (Sandbox Code Playgroud)

在这一点上,我不是在谈论使用eval()的危险 - 这个问题稍后会得到适当的关注("禁止"单词列表检查等).问题是我的尝试如下

$replacement = $this->replacement;
$newString = preg_replace_callback(
    '#' . $this->pattern . '#' . $this->modifiers,
    create_function('$match', '
                     global $replacement;
                     return eval(\'return \' . $replacement . \';\');
                    '),
                    $string);
Run Code Online (Sandbox Code Playgroud)

不起作用,没有错误发生.我的代码出了什么问题?

任何帮助将非常感激.


新信息.我试过这个

 Class A
{
    public function check()
    {
        $string = 'series 3-4';
        $pattern = 'series[ ]*(\d+)[ ]*-[ ]*(\d+)';
        $modifiers = 'um';
        $replacement = '$match[2] == …
Run Code Online (Sandbox Code Playgroud)

php oop eval preg-replace-callback create-function

2
推荐指数
1
解决办法
1061
查看次数

PHP,create_function还是在运行时评估它?

我有一个类,其中一些方法依赖于一个参数.编写此方法的最佳方法是什么?

例:

第一种方式

class Test{

    var $code;

    function Test($type){
        if($type=="A"){
            $this->code=create_function(/*some args and some code*/);
        }
        else if($type=="B"){
            $this->code=create_function(/*some args and some code*/);
        }
    }

    function use(/*some args*/){
        return call_user_func($this->code,/*some args*/);
    }
}
Run Code Online (Sandbox Code Playgroud)

第二种方式

class Test{

    var $type;

    function Test($type){
        $this->type=$type;
    }

    function use(/*some args*/){
        if($this->type=="A"){
            //some code
        }
        else if($this->type=="B"){
            //some code
        }
    }
}

$test=new Test("A");
$test->use();
Run Code Online (Sandbox Code Playgroud)

你会选择哪种方式?

php if-statement class create-function

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

如何修复MySQL CREATE FUNCTION查询?

我想添加mysql函数:

CREATE FUNCTION `chf_get_translation`(translation_id INT, site_lang INT) 
RETURNS text CHARSET utf8
BEGIN

  DECLARE translation TEXT;

  SELECT title 
    INTO translation 
    FROM chf_translations 
   WHERE key_id = translation_id 
     AND lang_id = site_lang;

  RETURN translation;

END
Run Code Online (Sandbox Code Playgroud)

但得到错误:

1064 - 您的SQL语法出错; 检查与MySQL服务器版本对应的手册,以便在第3行的"'附近使用正确的语法

mysql create-function mysql-error-1064

0
推荐指数
1
解决办法
2万
查看次数