2016-12-11 8 views
1

私はJavaプログラミングから来ており、PHP OOPスタイルになったらちょっと知っています。 Java Server Facesセッターgetters私はフォームに入力したデータからフィールドの値を設定するために使用しました。だから、例えばフォームの要素にsetterとgetterメソッドを使用するPHP OOP

Person.java

Class Person{ 
    private String firstname; 
    public setFirstName(String aFirstName){ 
     this.firstname = aFirstName; 
    } 
    public getFirstName(){ 
     return this.firstname; 
    } 
} 

PersonForm.xhtml

ファーストネーム:<input type="text" name="firstname" value="#{person.firstname}"/>

#{person.firstname}があります何がだから私はそれはPHPSのOOPスタイルで行うのかを確認するためにいくつかのGoogleをした

クラスからsetFirstName();メソッドを呼び出します。

PHPでは、このように見えると思いました。

Person.php

class Person{ 
    private $firstname; 
    public function setFirstName($aFirstName){ 
     $this->firstname = $aFirstName; 
    } 

    public function getFirstName(){ 
     return $this->firstname; 
    } 
} 

PersonForm.php

<?php 
    $person = new $Person(); 
?> 
<form> 
First Name: <input type="text" name="firstname" value="<?php echo $person->firstname ?>"/> 
</form> 

私はPersonクラスのsetFirstName()メソッドを使用して入力テキストフィールドに入力した値を格納したいです。

value="<?php echo $person->firstname ?>"の書き込みはsetFirstName()となりますか? どうすればいいですか?value="<?php echo $person->setFirstName() ?>"

私は任意の説明または例を感謝します。 PHPのOOPスタイルはJavaと非常によく似ています。そのため、手続き型ではなくOOPスタイルを使用してPHPを学習することにしました。

ありがとうございます。

答えて

1

person.html

value="<?php echo $person->firstname ?>"コールsetFirstName()方法を書いていますか?

$firstnamePersonクラスの私有財産であるので、あなたはそのようなクラスの外にアクセスすることはできません。そして、いいえ、setFirstName()メソッドを呼び出すことはありません。

またはvalue="<?php echo $person->setFirstName() ?>"を行う必要がありますか?

setFirstName()方法は、メソッド呼び出し、すなわちあなたが$person->setFirstName('My first name')のように、この方法では任意の引数を渡すしていないとの議論を期待しているので、いいえ、これはあなたにエラーが発生します。あなたがこれを行ったにもかかわらず、ユーザ入力値($person->setFirstName($_POST['firstname']);)でこのメソッドを呼び出さない限り、ユーザはファーストネームを入力することができません。後で、フォームにgetFirstName()メソッドを使用して、入力されたユーザー名を表示することができます。

はここにあなたのタスクを達成するためのコード例です、

<form action="" method="post"> 
    First Name: <input type="text" name="firstname" value="<?php if($person->getFirstName() != null){ echo $person->getFirstName(); } ?>"/> 
    <input type="submit" name="submit" value="Submit" /> 
</form> 

PHP

class Person{ 
    private $firstname = null; 
    public function setFirstName($aFirstName){ 
     $this->firstname = $aFirstName; 
    } 

    public function getFirstName(){ 
     return $this->firstname; 
    } 
} 

$person = new Person(); 

if(isset($_POST['submit'])){ 
    $person->setFirstName($_POST['firstname']); 
} 

HTMLは、上記の例では、HTMLとPHPコードの両方がオンであることを前提としてい同じページ。

1

重要なポイントはです。PHPはサーバサイドで動作しています。 PHPスクリプトをリクエストして実行すると、PHPスクリプトが実行されて終了します。そのPersonForm.phpスクリプトを実行すると、HTMLドキュメントが生成され、ブラウザに送信されます。それはあなたのブラウザ(フロントエンド)でPHPを実行する機会はもうありません。

フォームに入力された内容を保存するには、JavaScript/jQueryを使用してAJAXをPHPスクリプトに呼び出す必要があります。 JavaScriptがフォーム入力を読み取ってバックエンドのPHPスクリプトに送信すると、データベースなどにデータを挿入するようなデータが処理されます。

Javascript/jQueryおよびAJAXの詳細については、この。

jQueryを使用して簡単に実現できます。

main.js

$("#submit").click(function(){ 
    personName = $("input[name=firstname]").val(); 
    $.ajax({ 
     type: 'POST', 
     url: 'SavePerson.php', 
     data: {name: personName}, 
     success: function(result, status, xhr) { 
      popup("Success!"); 
     } 
    }); 
}); 

SavePerson.php

<?php 
    include_once('Person.php'); 

    $person = new Person(); 
    $person->setFirstName($_POST['name']); 

    // Do whatever you want with person... 
?> 

PersonForm.html

<!DOCTYPE html> 
<html> 
    <form> 
     First Name: <input type="text" name="firstname" placeholder="Enter your name"/><br /> 
     <button id="submit" value="Submit">Submit</button> 
    </form> 
    <script src='main.js'></script> 
</html> 
2

あなたはABになりますあなたが定義したクラスをフォームの中で呼び出されているスクリプトの中で使うことができます(少なくともそれは私がやる方法です)。

<form action="savePerson.php" method="post"> 
First Name: <input type="text" name="firstname" id="firstname"> 
<button type="submit">Submit</button> 
</form> 

savePerson.php

<?php 
class Person{ 
    private $firstname; 
    public function setFirstName($aFirstName){ 
     $this->firstname = $aFirstName; 
    } 

    public function getFirstName(){ 
     return $this->firstname; 
    } 
} 

$person = new Person(); 
$person->setFirstName($_POST['firstname']); 

//do something on the person object 


?> 
2

この例では、すでにこの値が他の場所に保存されていない限り、宣言される前にHTML形式のFirstnameを実際に宣言することはできません。データベース。リアルタイムでデータを保存して出力するには、Javascriptのようなクライアント側の言語を使用する必要があります。 PHPに関して言えば、データベースまたは変数$aFirstNameの呼び出しをあらかじめ定義しておけば、PHPはおそらく次のようになります。

人。PHP

class Person{ 

    private $isSet; //Is Name Set on Object Creation 
    private $firstname; 

    public function __construct($aFirstName = false) { //Check if name is created on object creation. 

     if ($aFirstName === false) { 

      $this->isSet = false; 
      $this->firstname = 'No Data'; //Set so your field will always have predefined data. 

     } else { 

      $this->isSet = true; 
      $this->setFirstName($aFirstName); 

     } 
    } 

    private function setFirstName($aFirstName){ 

     $this->firstname = $aFirstName; 

    } 

    public function getFirstName(){ 

     return $this->firstname; 

    } 
} 

PersonForm.php

<?php //Check if Post data is set, if so then set name constructor 

    if (isset($_POST['firstname'])) { 

     $person = new Person($_POST['firstname']); 

    } else { 

     $person = new Person(); 
    } 

?> 


<form method="post" action=""> 
    First Name: <input type="text" name="firstname" value="<?php echo $person->getFirstName() ?>"/> 
    <input type="submit" value="submit"> 
</form> 

値が設定されている場合、フォーム入力が 'YOUR挿入されたデータ' を設定されているかどうか、この意志出力 'データなし'。

関連する問題