PHP:使用页面之间的方法传递对象

时间:2016-07-14 05:34:50

标签: php

关于在页面之间传递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();
?>

有没有办法让这项工作?

1 个答案:

答案 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异步密钥!!!