如何将数据存储在 class 函数的变量中,然后在外部访问它

How To store a data in variable in a class function and then access it outside

我正在尝试创建一个页面,它将从数据库加载值并显示它。但是,我使用 类 而不是普通函数。

下面是我正在执行的中间代码

if($_GET['page'] == "tip" && isset($_GET['id']))
{
    static $title;
    static $status;
    static $featured_image;
    static $excerpt;

    include("config.php");

    class Tip Extends Connection
    {
        public function show()
        {
            $query = ' SELECT status, title, featured_image, excerpt from tips WHERE id = "'.$_GET['id'].'" ';
            $connection = $this->establish_connection();
            $data = $connection->query($query);
            $connection->close();

            if($data->num_rows > 0)
            {
                while($row = $data->fetch_assoc())
                {
                    $title = $row['title'];
                    $status = $row['status'];
                    $featured_image = $row['featured_image'];
                    $excerpt = $row['excerpt'];
                }
            }
            else
            {
                echo json_encode(array('status' => 'No Data Found'));
                exit();
            }
        }
    }
    $tip = new Tip();
    $tip->show();
}

上面的代码在页面加载时首先执行,之后我尝试在 HTML 输入中显示变量,如下所示。

<input type="text" autofocus id="tip_title" class="tip_title round form-control" placeholder="What's the title of your Post?" value="<?php echo $title; ?>" name="tip_title">

它没有显示错误,也没有显示数据。只是想知道这是我的代码出错了。

$title 不在你的方法范围内 show().

只需在方法中添加global $title即可。

不过,我建议将变量声明为 class Tip 的属性,并使用 $tip->title;

访问它们

如果这 4 个静态变量是对象属性,那么您需要在 class:

中定义它们
class Tip Extends Connection
{
    public $title;
    public $status;
    public $featured_image;
    public $excerpt;

... public function show()...

你的 show() 方法没有 return 任何东西,所以我的假设是你只想调用一次 show 方法来填充 public 属性,然后你在其他一些地方显示这些属性的值。

如果属性定义为 public,则您可以直接在对象上访问它们:

$tipObject = new Tip();
$tipObject ->show();
echo $tipObject ->title; // no dollar sign after $this->

此外,如果它们像下面的示例一样被定义为静态的,您可以访问它们而无需仅使用 class 名称创建的对象:

class Tip Extends Connection
{
    public static $title;
    public static $status;
    public static $featured_image;
    public static $excerpt;

    ...
}

echo Tip::$title; // with the dollar sign after ::