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

PHP 未定义错误变量的问题

PHP 未定义错误变量的问题

PHP
HUH函数 2023-08-06 14:34:27
我遇到了“未定义的变量:第 2 行 transaction.php 中的错误”的问题如果我尝试使用 $errors 变量创建模板站点,它应该在所需的 transaction.php 中给出 $error 数组,但它没有,应该如何将其赋予此 transaction.php 才能使其工作?索引.php    function checkTransaction(){            if(!empty($_POST['code'])){                return true;            }            return [                'code' => false            ];        }        function renderTransactionResult($errors){            $getTemplate = new Template('transaction', [                'errors' => $errors            ]);            echo $getTemplate;        }        $transactionid = htmlspecialchars($_POST['search']);        $transactionrows = $main->CheckNumRowsTransaction($transactionid);        if($transactionrows === 1){            $errors = checkTransaction($_POST);            renderTransactionResult($errors);        }else{        $errors = [            'transaction' => false        ];        renderTransactionResult($errors);        }获取交易.php<?php    Class Template{        public function __construct($template, $vars){            $this->template = $template;            $this->vars = $vars;                    }        public function __toString(){            foreach ($this->vars as $name => $value){                $name = $value;            }            unset($name, $value);            ob_start();            require('templates/' . $this->template . '.php');            return ob_get_clean();        }    }交易.php<?php    if(is_array($errors)){        echo 'something';    }else{        echo 'something';    }?>
查看完整描述

1 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

当你实例化变量时,它们有一定的范围,在这个范围内变量是已知的。我不明白你是如何加载文件的,但我假设你希望在访问 index.php 时发生 transaction.php 的逻辑。要实现此目的,可以将 transaction.php 放入一个以 $errors 作为构造函数变量的类,实例化它并调用该方法:


[交易.php]


class Transaction

{

    private $errors;

    public function _construct($errors)

    {

         $this->errors = $errors;

    }


    public function handleErrors()

    {

        if(is_array($errors))

        {

            echo 'something';

        }

        else

        {

            echo 'something';

        }

    }

}

[getTransaction.php]


Class Template

{

    public function __construct($template, $vars)

    {

        $this->template = $template;

        $this->vars = $vars;

        $transaction = new Transaction($vars); //instantiates your class

        $transaction->handleErrors(); //calls the method

    }

    public function __toString()

    {

        foreach ($this->vars as $name => $value)

        {

            $name = $value;

        }

        unset($name, $value);

        ob_start();

        require('templates/' . $this->template . '.php');

        return ob_get_clean();

    }

}

或者将 transaction.php 变成您在 index.php 中定义并调用的函数: [index.php]


function checkTransaction()

{

    if(!empty($_POST['code']))

    {

        return true;

    }

    return [

        'code' => false

    ];

}


function handleErrors($errors)

{

    if(is_array($errors))

    {

        echo 'something';

    }

    else

    {

        echo 'something';

    }

}


function renderTransactionResult($errors)

{

    $getTemplate = new Template('transaction', [

        'errors' => $errors

    ]);


    echo $getTemplate;

}


$transactionid = htmlspecialchars($_POST['search']);

$transactionrows = $main->CheckNumRowsTransaction($transactionid);



if($transactionrows === 1)

{

    $errors = checkTransaction($_POST);


    renderTransactionResult($errors);

}

else

{

    $errors = [

        'transaction' => false

    ];


    renderTransactionResult($errors);

}

请注意,我没有审查您的功能、效率或安全性代码,而只是制定了解决您的范围问题的答案。

查看完整回答
反对 回复 2023-08-06
  • 1 回答
  • 0 关注
  • 59 浏览

添加回答

举报

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