无法从Web表单获取要显示的PHP类的值

无法从Web表单获取要显示的PHP类的值,php,class,Php,Class,我很难从使用PHP类文件通过web表单提交的变量中获取值 以下是我的网页结构: 订购表格页 Process.php页面 Book.php页面 我可以很容易地获取输入的用户数据(在订单页面上)、流程,并将其显示在process.php页面上。问题是我必须创建一个Book类,并使用Book类打印数据的详细信息 我有一个空构造函数打印出“created”,所以我知道我的构造函数正在被调用。我还可以打印“title”一词,因此我知道我可以使用Book类打印到屏幕上 我的问题是我无法在Book类中获取

我很难从使用PHP类文件通过web表单提交的变量中获取值

以下是我的网页结构:

  • 订购表格页
  • Process.php页面
  • Book.php页面
我可以很容易地获取输入的用户数据(在订单页面上)、流程,并将其显示在process.php页面上。问题是我必须创建一个Book类,并使用Book类打印数据的详细信息

我有一个空构造函数打印出“created”,所以我知道我的构造函数正在被调用。我还可以打印“title”一词,因此我知道我可以使用Book类打印到屏幕上

我的问题是我无法在Book类中获取变量中的值

以下是我的变量声明:

    private $title;
以下是我的printDetails函数:

    public function printDetails () {
    echo "Title: " . $this->title . "<br />";
    }
以下是我的get和set函数:

    function __getTitle($title)
{
    return $this->$title;
}

    function __setTitle($title,$value)
{
    $this->$title = $value;
}
我还有另外四个变量,我也希望能显示出来。每一个都有自己的变量声明、printDetails中的一行以及自己的setter和getter

最后,在我的PHP过程中,我还调用了Book类。看起来是这样的:

    function __autoload($book) {
        include $book . '.php'; 
    }
    $bookNow = new book();
$title = !empty($_POST["title"]) ? $_POST["title"] : NULL;
$bookNow->_setTitle($title);
$title = !empty($_POST["title"]) ? $_POST["title"] : 'No Title Found!';
$bookNow = new Book();
$bookNow->_setTitle($title);
$bookNow->printDetails();
任何帮助,非常感谢。它一定非常小(我希望如此)。

\u setTitle()
应该只有一个参数,并删除赋值语句中的第二个
$
字符(也用于
getTitle()
),如下所示:

function _setTitle($title)
{
    $this->title = $title;
}
现在这样称呼它:

    function __autoload($book) {
        include $book . '.php'; 
    }
    $bookNow = new book();
$title = !empty($_POST["title"]) ? $_POST["title"] : NULL;
$bookNow->_setTitle($title);
$title = !empty($_POST["title"]) ? $_POST["title"] : 'No Title Found!';
$bookNow = new Book();
$bookNow->_setTitle($title);
$bookNow->printDetails();
不要使用双下划线,除非你在处理神奇的函数。我认为那是不好的做法。还要检查类的大小写-尽管php对大小写非常放松。如果您的类文件名为“Book.php”,那么应该使用大写字母调用构造函数,以确保(也可能是括号)

编辑:好的,这是我制作的类,它工作得很好,我测试了它:

class Book {

    private $title;

    function __construct() {}

    function _getTitle($title)  {
        return $this->title;
    }

    function _setTitle($title) {
        $this->title = $title;
    }

    public function printDetails() {
        echo "Title: " . $this->title . "<br />";
    }

}
注意:不要将上述语句放在'book.php'类文件中


如果表单提交出错,您将看到“未找到标题!”,否则,您将看到正确的标题。

如何调用uu setTitle?
$bookNow=new book()-是否添加括号?你说这个类在
Book.php
中。那么也许
book()
也应该是
book()
?@GBD您如何调用setTitle?我想这是我的问题。我有一个收集数据的表单,我可以让它显示在process.php中。但是,这些值不会“移动”到book类。你知道我如何在book类中调用setTitle吗?还有,你的
\uu getTitle()
\uu setTitle()
方法不应该以单下划线开头吗?我认为PHP将带有双下划线的函数视为特殊(神奇)。@Stefan同样,您的uuu get和uu set方法不应该以单下划线开始吗?我认为PHP将带有双下划线的函数视为特殊的…………我尝试了一个下划线,没有区别。谢谢。我不知道它是否不起作用,因为在阅读本书之前,它正在通过process.php页面。php非常感谢您的时间和才华。如果
book.php
是你的类文件,我希望我能让它运行起来。@kentrenholm,不要把你的
$bookNow=new book()
$bookNow->setTitle()
等语句放在该文件中。但是无论哪种方式,自动加载都将包括process.php广告中的所有内容,因此您将能够访问POST值。感谢您的后续操作。他又做了一次尝试。可能是因为我正在接受process.php文件中的值,并进行验证。我真的不知道。你所有合理的逻辑和建议都很有意义。抱歉占用你的时间。