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

あなたはあなたが期待するのとまったく同じようにこれをするでしょう:

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

クラスのインスタンス化とそのメソッドの呼び出しの基本はそれほど難しくありません。それを行うための間違った方法はほとんどありません。秘訣は、オブジェクト指向プログラミングを最大限に活用し、オブジェクトを適切に構造化することです。これは、時間の経過とともに慣れる必要があることです。静力学を使用してテスト可能性を殺さない方法を参照して、今後の予定を把握してください。

于 2012-11-08T11:41:09.237 に答える
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 に答える
0

フォームの送信をリンクするにはaddPost()、アクション URL を作成し、PHP スクリプトを作成する必要があります。最初のアプローチは、次のように書くことです。

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

これに関する主な問題は、フォームの値を投稿から Gaestebog に抽出する責任を負っていることです。より良いアプローチはaddPost()、アクションを処理することをパラメーター化することです。

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 フレームワークはこのアプローチを使用します) が、学習している場合は、この方法から始めることをお勧めします。

最後に、これは最初のステップに過ぎないことに注意してください。次に考慮すべきことの 1 つは、データの検証とエラーの報告です。通常、検証はサーバー側で行いますが、ユーザー エクスペリエンスを向上させたい場合はクライアント側でも行います。サーバー側の部分は、通常、モデルで動作するアクションによって調整されます。クライアント側は HTML ビューで行われます。

HTH

于 2012-11-08T11:49:03.583 に答える