在前端显示使用PHP函数检索的数据,而不使用全局变量

在前端显示使用PHP函数检索的数据,而不使用全局变量,php,html,class,object,global-variables,Php,Html,Class,Object,Global Variables,我有一个数据库,其中有一个名为member的表。会员有不同的栏,如mem_id mem_image、mem_缩略图、mem_phone、mem_email、city_name等。此表中有200多个条目,总计200个不同的mem_id。 我在一个类中有一个php函数,用于执行mysql查询 class myClass{ public function __construct(){} public function memDetails($conn,$cityName)

我有一个数据库,其中有一个名为member的表。会员有不同的栏,如mem_id mem_image、mem_缩略图、mem_phone、mem_email、city_name等。此表中有200多个条目,总计200个不同的mem_id。 我在一个类中有一个php函数,用于执行mysql查询

class myClass{

    public function __construct(){}

    public function memDetails($conn,$cityName)
    {

        global $memId;
        global $memImage;
        global $memThumb;
        global $memPhone;
        global $memEmail;


        $sql = "SELECT * FROM member WHERE mem_id=$memId";

        $mem_details = $this->query($conn,$sql);

        foreach ($mem_details as $setValue) {
            $memId= $setValue->mem_id;
            $memImage= $setValue->mem_image;
            $memThumb= $setValue->mem_thumbnail;
            $memPhone= $setValue->mem_phone;
            $memEmail= $setValue->mem_email;

    }
}
现在在Php前端页面中显示数据,首先创建myClass类的对象,然后调用函数memDetails

<html>
    <head>
    </head>
    <body>
        // database connection code here
        $obj = new myClass();
        $obj->memDetails($conn, $memId);
        <p>Image URL= <?PHP echo $memImage ?></p>
        <p>Thumb URL= <?PHP echo $memThumb ?></p>
        <p>Phone= <?PHP echo $memPhone ?></p>
        <p>Email= <?PHP echo $memEmail ?></p>
    </body>
</html>

//这里是数据库连接代码
$obj=新的myClass();
$obj->memDetails($conn,$memId);
图像URL=

拇指URL=

电话=

电子邮件=

我这样做的原因是因为我需要在不同的页面中使用此函数来检索成员的数据。这就是为什么我将变量声明为全局变量,这样我可以在调用该函数后在所有页面中使用它们。但正如我所听说的,使用global是不明智的,因为它很难跟踪所有全局变量,而且它的名称的一个更改将需要我在所有页面上更改它


因此,我可以通过哪种方式更好、更高效地完成这项工作,并且在前端php页面中需要更少的php代码。

您的问题中有一些未解决的问题,但为了简单起见,我建议您从memDetails方法返回一些内容。比如说

class myClass{

    public function __construct(){}

    public function memDetails($conn,$memId)
    {

        $result=[];

        $sql = "SELECT * FROM member WHERE mem_id=$memId";

        $mem_details = $this->query($conn,$sql);

        foreach ($mem_details as $setValue) {
            $result['memId'] = $setValue->mem_id;
            $result['memImage'] = $setValue->mem_image;
            $result['memThumb'] = $setValue->mem_thumbnail;
            $result['memPhone'] = $setValue->mem_phone;
            $result['memEmail'] = $setValue->mem_email;
        }

        return $result;
    }
}   
将返回一个关联数组,以便以后可以执行此操作

<html>
    <head>
    </head>
    <body>
        // database connection code here
        $obj = new myClass();
        $result = $obj->memDetails($conn, $memId);
        <p>Image URL= <?PHP echo $result['memImage'] ?></p>
        <p>Thumb URL= <?PHP echo $result['memThumb'] ?></p>
        <p>Phone= <?PHP echo $result['memPhone'] ?></p>
        <p>Email= <?PHP echo $result['memEmail'] ?></p>
    </body>
</html>

//这里是数据库连接代码
$obj=新的myClass();
$result=$obj->memDetails($conn,$memId);
图像URL=

拇指URL=

电话=

电子邮件=

这样,myClass就不需要知道任何关于外部或全局范围内变量的信息


还有其他方法可以做到这一点。相反,每个$setValue属性可以分配给一个成员变量,但是您需要保留myClass的不同实例,以避免混合结果。在这个解决方案中,您只需执行一次myClass实例,然后就可以使用不同的$memId反复使用
memDetails

谢谢@amenadiel。我现在就试试这个。