从同一文件中调用PHP函数

尤达大师

我有一个名为choice.php的php文件,其中我在其中回显了一些HTML,即select元素。

我正在使用PDO从mysql数据库中填充select元素。

我编写的代码可以完美地工作,但是当我将其放入函数中并尝试调用它时,我收到一条错误消息,告诉我无法再次声明所述方法。

因此,代码是:

echo        '<select>';

                $sql = "SELECT name FROM people";
                $res = $conn->prepare($sql );
                $res ->execute();

                while ( $row  = $res ->fetch() )
                {
                    echo '<option value = "' . $row['name '] . '">' . $row['name '] . '</option>';
                }

echo        '</select>';

换句话说,该函数将如下所示:

function getnames()
{
        $sql = "SELECT name FROM people";
        $res = $conn->prepare($sql );
        $res ->execute();

        while ( $row  = $res ->fetch() )
        {
          echo '<option value = "' . $row['name '] . '">' . $row['name '] . '</option>';
        }
}

为什么我不能在回显的选择元素内调用该方法?

echo        '<select>';
                     getnames();
echo        '</select>';

另外,我将如何将该方法放置在另一个php文件中以使其保持整洁呢?

乔恩

为什么我不能在回显的选择元素内调用该方法?

因为方法主体引用$conn,所以应该是全局变量,而不是方法主体内部的范围。您可以验证这是问题所在(并“修复”)

function getnames()
{
    global $conn;
    // the rest as before
}

现在,尽管这将使问题消失,但您在此处提出的建议并不是组织事物的好方法。有几个问题:

  • getnames 使用全局变量(“不可见参数”)-请注意,如果此问题已得到纠正,您将没有理由问这个问题!
  • 该方法的名称具有误导性-它不会“得到”某些东西,而是输出HTML
  • 该方法除了其特定用途外,无法用于其他任何用途-如果您想对名称进行其他操作(例如,打印表格),则必须编写另一种方法。
  • 您正在将直接的HTML输出(<select>标记)与业务逻辑(查询数据库)交织在一起。最好预先进行所有业务逻辑(将所需的结果保留在变量中),然后一次性完成HTML。

以上所有都是所选方法的严重缺陷,并且在完善的应用程序中都不会出现这些缺陷。我建议您最好通过重构代码来解决这些问题,而不是使问题消失,并且问题会自动解决。

代码审查将是一个很好的场所,它可以按照“我有此代码和此建议-我将如何正确实施?”的方式提出问题。如果您需要其他帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当在同一文件中定义其调用函数时,如何在C中模拟函数?

为同一文件夹的URL路径调用jQuery函数

从同一文件夹中调用另一个.bat文件?

PHP与表单位于同一文件中还是单独存在?速度

JS-如何在同一文件中访问module.exports函数

调用const时组件未将props传递给同一文件中的其他组件

如何使用eclipse for php在同一文件中同时使用PHP,HTML,CSS和JS

如何模拟在同一文件中定义但未被测试方法导入的函数?

调用同一文件中的测试功能

将值存储在同一文件中

afterScenario无法正常工作调用不在同一文件夹中的功能

嘲笑同一文件的已测试函数调用的函数

如何在此自定义方法调用中检测到它是同一文件

PHP语法:同一文件中的相同代码段返回不同的值

在PHP中多次包含同一文件

在同一文件中声明委托协议

表单操作在同一文件上调用php

如何使用htaccess避免php中同一文件的多个路径?

茉莉花-监视在同一文件中调用的函数

从同一文件中绘制多个系列

在node.js的同一文件中获取函数的变量

在同一文件中通过 ajax 用 PHP 填充 html 表

同一文件中函数的循环依赖python

从声明的同一文件中导入函数

调用同一文件夹中定义的另一个函数时,“模块”对象不可调用

对同一文件进行多次ajax调用以在同一文件中执行不同的代码?

在同一文件外传递和调用函数

React:从同一文件调用异步方法

访问同一文件中类的私有成员的函数