0

我是 OOP 的新手,我想在第一个学习周期把事情做好。

我有一个 HTML 表单:

<?php
include("classes/Gaestebog.php");
$gaestebog = new Gaestebog();
?>
<html>
<head>
</head>
<body>
<form action="" method="post">
    <table>
        <tr>
            <td>Navn:</td>
            <td><input type="text" name="navn" value="Patrick" /></td>
        </tr>
        <tr>
            <td>Besked:</td>
            <td><input type="text" name="besked" value="Hej med dig !!" /></td>
        </tr>
        <tr>
            <td><input type="submit" name="opret" value="Opret" /></td>
        </tr>
    </table>
</form>

</body>
</html>

和留言簿类:

<?php
class Gaestebog {

    public function Gaestebog() {

    }

    public function getPosts() {

    }

    public function addPost() {

    }
}
?>

我希望 :Guestbook 在提交表单时调用 addPost 方法。我将如何处理这个问题?

4

4 回答 4

1
get an object of your class and then call the function..

for example.. if your submit button name is 'submit' and your class name is Guestbook, then in your action page-
$guest = new Guestbook();

if($_REQUEST['submit'])      // to check that submit button is clicked
{
 $guest->addPost($data); //where data array is what to be saved from post
}

you have to include that class file in your action page like..
require '...';
于 2012-11-08T11:36:12.877 回答
1
<?php
if(isset($_POST)) {
    include("classes/Gaestebog.php");
    $gaestebog = new Gaestebog();

    $data = array(
        'title' => $_POST['title'], 
        'author' => $_POST['author'],
        'content' => $_POST['content']
        // etc. 
    ); // Do not forget to validate your data

    $gaestebog->addPost($data);
}
?>
<!-- The HTML part... --> 
于 2012-11-08T11:39:54.593 回答
1

您将完全按照您的预期执行此操作:

if ($_POST) {
    include 'classes/Gaestebog.php';
    $gaestebog = new Gaestebog;
    $gaestebog->addPost($_POST);  // <-- example guess...
}

实例化类和调用它们的方法的基础知识并不难。几乎没有错误的方法可以做到这一点。诀窍是充分利用面向对象编程的潜力,并以一种好的方式构造对象,这是您需要随着时间的推移而习惯的。请参阅如何使用静力学不扼杀您的可测试性,以了解即将发生的事情。

于 2012-11-08T11:41:09.237 回答
0

为了将表单的提交链接到addPost()您应该创建一个操作 url 并编写一个 PHP 脚本。第一种方法是编写如下内容:

require_once("classes/Gaestebog.php");
$gaestebog = new Gaestebog();
$gaestebog->addPost();

这样做的主要问题是您将从帖子中提取表单值的责任留给了 Gaestebog。更好的方法是参数化addPost()an 让操作处理:

require_once("classes/Gaestebog.php");
$navn = $_GET["navn"];
$besked = $_GET["besked"];
$gaestebog = new Gaestebog();
$gaestebog->addPost($navn, $besked);

通过这种方式,您可以将视图(即 html 页面)与模型(即 Gaestebog 类)分离。使用通用动作处理程序和 .htaccess mod_rewrite 的一些帮助(大多数 PHP MVC 框架使用这种方法)有更多“高级”方法来处理这个问题,但如果你正在学习,我建议你以这种方式开始。

最后,请记住,这只是第一步;接下来要考虑的事情之一是数据验证和错误报告。您通常在服务器端进行验证,如果您想改善用户体验,您也可以在客户端进行验证。服务器端部分通常由使用模型的动作来协调。客户端在 HTML 视图中完成。

高温高压

于 2012-11-08T11:49:03.583 回答