关于在页面之间传递PHP类对象存在各种各样的问题,主要是通过序列化,压缩等。但是,对象的方法不会被传递。
我有一个课说:
class Car
{
public function BrakeStatus()
{
//Fetch some sql data and return status of brakes
}
}
在页面“page1.php”
<?php
$car = new Car;
$link = "<a href='page2.php?car=".$car."'>Click here</a>";
echo $link;
?>
在页面“page2.php”
<?php
$car2=$_REQUEST('car');
$car2_brakes=$car2->BrakeStatus();
?>
有没有办法让这项工作?
答案 0 :(得分:0)
所以,我只看到一种方法: Car.php:
<?php
class Car
{
public function BrakeStatus()
{
echo 'Test string!';
}
}
page1.php中:
<?php
$carFilePath = 'Car.php';
require($carFilePath);
$car = new Car;
$carString = serialize($car);
$carImplementation = str_replace('<?php', '', file_get_contents('Car.php'));
$data = [
'carString' => $carString,
'carImplementation' => $carImplementation,
];
$JSONData = json_encode($data);
$link = "<a href='page2.php?car=".$JSONData."'>Click here</a>";
echo $link;
使page2.php:
<?php
$carJSON=$_REQUEST('car');
$data = json_decode($carJSON);
eval($data->carImplementation);
$car = unserialize($data->carString);
$car->BrakeStatus();
但是如果你需要这个,你就会遇到架构问题。请阅读Grady Booch撰写的“面向对象的分析和应用程序设计”(https://en.wikipedia.org/wiki/Grady_Booch)。这与面向对象编程(隐藏实现)的概念相反。
因此,如果您真的想要突然应用,请加密$ JSONData异步密钥!!!