【问题标题】:How to call a function in PHP如何在 PHP 中调用函数
【发布时间】:2019-01-20 08:04:04
【问题描述】:

我一直在学习一些关于如何创建会话对象的课程,效果很好,如果我将完整的代码放到 PHP 文件中,一切都会很好!

我想做的是将它放在另一个模块(PHP 文件)中,然后使用一行(或等效的)来执行此操作,例如 GetSessiondata();

<?php
$SqlCon = new DBConnect("Databaselocation","Database","Usr","Pss");                     
$UserDataSet = $SqlCon->GetUserList("SELECT * FROM Users");

echo "<br /><br />";
echo "<br /><br />";

if ($UserDataSet)          
{               
    echo "<table>" . "<thead>" ;
    echo "<tr><th scope=\"col\">" . 'Usr' . "</th>";
    echo "<th scope=\"col\">" . 'Lvl' . "</th></tr></thead><tbody>";                
    foreach($UserDataSet as $data)
    {                                  
        echo "<td>" .$data->GetUsrName()."</td>" ;
        echo "<td>" .$data->GetUsrLevel()."</td></tr>" ;                                       
    }
    echo "<tfoot><tr><th scope=\"row\" colspan=\"2\">" . 'Total Users = 2' . "</th></tr></tfoot>";
    echo "</tbody>" . "</table>" ;  
}
else
    echo "Nothing Found in DB!";
?>

【问题讨论】:

  • 我认为这就是他要问的 - 如何将代码放入函数中,也许是哪个 coed
  • @Mawg 抱歉,我没有阅读所有帖子
  • require_once 是你要找的东西:php.net/manual/it/function.require-once.php
  • 是的,对不起,我不太擅长这个,我还在努力学习......我的道歉!这样 require once 会将所有数据放在调用它的页面上?
  • Require_once,要求或包含文件将起作用,如果它是一个类,则实例化它。

标签: php


【解决方案1】:

您需要“要求”您的文件,在您想使用它的地方。

这里是一个例子

使用类:

随便.php

class Whatever {
  public function __construct() {
    // Ever when the code is instantiated, this will be called too!
  }
  public function myMethod() {
    echo 'hello';
  }
}

index.php

require_once('./Whatever.php');
$whatever = new Whatever();
$whatever->myMethod();

没有类:

functions.php:

function whatever(){ echo 'hello'; }

index.php:

require_once('./functions.php');
whatever();

了解更多:

要求:http://php.net/manual/es/function.require.php

Require_once: http://php.net/manual/es/function.require-once.php

【讨论】:

  • 再次嗨,所以我尝试了第一种方法,添加了 require_once 然后调用该函数,这给了我一个 php 错误“PHP Parse error: syntax error, unexpected 'public' (T_PUBLIC) " 我在这里读到...stackoverflow.com/questions/13341378/… 不正确,因为它应该在课堂上?
  • 你声明你的班级了吗?如果你使用一个类,你需要声明你的“方法”,这可以是公共的、受保护的或私有的。这三个关键字在方法声明中是必需的。向我展示您的代码以帮助您。
【解决方案2】:

我的建议是将这个重构过程分为两个步骤:

1.将代码包装成函数:

function someFunctionName() {
    $SqlCon = new DBConnect("Databaselocation","Database","Usr","Pss");                     
    $UserDataSet = $SqlCon->GetUserList("SELECT * FROM Users");

    echo "<br /><br />";
    echo "<br /><br />";

    if ($UserDataSet)          
    {               
        echo "<table>" . "<thead>" ;
        echo "<tr><th scope=\"col\">" . 'Usr' . "</th>";
        echo "<th scope=\"col\">" . 'Lvl' . "</th></tr></thead><tbody>";                
        foreach($UserDataSet as $data)
        {                                  
           echo "<td>" .$data->GetUsrName()."</td>" ;
           echo "<td>" .$data->GetUsrLevel()."</td></tr>" ;                                    
        }
        echo "<tfoot><tr><th scope=\"row\" colspan=\"2\">" . 'Total Users = 2' . "</th></tr></tfoot>";
        echo "</tbody>" . "</table>" ;  
    }
    else
        echo "Nothing Found in DB!";
}

// and call your function
someFunctionName();

2.在同一个目录中创建另一个文件,比如functions.php,并将函数移入其中。现在你可以在你的 php 页面中 require 这个文件了:

require_once 'functions.php';

// and call your function
someFunctionName();

【讨论】:

  • 非常感谢你,我会试一试的,我把它包装在一个函数中是朝着正确的方向前进,但受限于如何调用它:-)
【解决方案3】:

我想你在找include

保存您的文件,然后您可以将其包含到另一个文件中:

include 'my_file.php';

你也可以使用:

阅读文档以获得更多解释或查看this question

【讨论】:

  • 很棒,效果很好,您需要在要使用它的地方“要求”您的文件。这里是一个使用类的示例:MyClass.php 我实际上已经尝试过使用 MyClass 的第二种方法,但没有使用 html 顶部的 require_once :-) 对所有帮助的人来说都是很多thanx。
  • @Mark 您可以拥有多个文件(一个用于数据库连接,一个用于常量等),将它们包含在 1 个文件中(例如 master.php),然后在每个文件中包含此文件您需要的页面。当您学习面向对象编程时,您可能想要创建一个自动加载器(它会自动包含您的类文件)。我希望你会喜欢学习 PHP ;-) (PS:如果我的问题解决了你的问题,你可以投票和/或接受它)
  • 这正是我想要学习的。我想学习面向对象,我正在努力,但是我有一定的学习障碍,但是,我也不是那种说我不能的人:-),所以我在努力!你们给我的所有很好的反馈都让我朝着正确的方向前进……直到现在我已经创建了一个 Session.php、SessionData.php 和一个 GetSessionData.php。我也想把我所有的 SQl 字符串放在一个地方。我在哪里可以说你的答案是正确的?因为我在页面上找不到它 :-)
  • @Mark 我建议你经常浏览 StackOverflow 和 php.net 文档,这对你有很大帮助!接受我的回答:在答案左边你可以看到分数(你可以投票赞成/反对),在分数下方你可以看到一个灰色的勾号。通过单击它,您可以设置问题的接受答案。
  • 我可能在我的问题/反馈和他们需要的地方做了一个嘘声(如果是这样,我很抱歉!)你的建议是合理的,并且帮助我取得了巨大的进步。但是为了澄清遮阳篷,让每个人都开心:-)“使用类:”部分“是”我如何设置我的类:方法所以这有助于我理解类/方法是如何工作的!并使用“包含”方法(如果这是正确的术语!)帮助我启动了 GetSessionData.php 所以再次感谢大家的每一条信息!
猜你喜欢
  • 2017-07-29
  • 2015-04-20
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-15
相关资源
最近更新 更多