如何将数据存储在 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 ::
我正在尝试创建一个页面,它将从数据库加载值并显示它。但是,我使用 类 而不是普通函数。
下面是我正在执行的中间代码
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 ::