Обработка форм - PullRequest
       5

Обработка форм

0 голосов
/ 13 декабря 2010

Я пытаюсь найти более чистый способ обработки данных POST.Вот моя форма:

Email <input type="text" name="email" /><br/>
Subject <input type="text" name="subject" /><br/>
Message <input type="text" name="body" /><br/>
<input type="submit" value="Submit">

Я создал страницу PHP для обработки формы и назвал класс следующим образом:

$mail = new Email();
$mail->processPost($_POST);

В моем классе у меня есть:

function processPost($post) {
 foreach($post as $key => $value) {
 $_POST[$key] = $$value;
 }
}

function Email($to, $subject, $body) {
 $this->processPost->email;
 $this->processPost->subject;
 $this->processPost->body;  
}

Но я не уверен, как установить переменные как общедоступные в функции processPost, чтобы они были доступны для функции электронной почты.Буду признателен за помощь.Я не получаю никакого вывода от функции processPost, когда я вызываю ее, как указано выше, а затем пытаюсь отобразить переменные ниже нее.Благодаря.

Ответы [ 3 ]

2 голосов
/ 13 декабря 2010

Я не уверен, что вы пытаетесь сделать в вашей функции postProcess здесь:

foreach ($ post as $ key => $ value) { $ _POST [$ key] = $$ value; }

двойной доллар присваивает $ _POST [$ key] значению переменной $$ value (ex $ email), но переменная $ email не имеет значения из того, что я могу сказать.

Теперь, почему вы присваиваете это $ _POST [$ key] вместо $ this-> processPost [$ key]? Если вы сделали это таким образом, вы сможете получить доступ к значению в функции электронной почты: $ this-> processPost ['email']

Извиняюсь, если я неправильно понял вопрос

1 голос
/ 13 декабря 2010

Не уверен, что вы пытаетесь достичь здесь.Может быть, что-то вроде этого?

<?php
class Email
{
  protected $to = '';
  protected $subject = '';
  protected $body = '';

  public function __construct( $to, $subject, $body )
  {
     // TODO: Validate input with `filter_var`

     $this->to = $to;
     $this->subject = $subject;
     $this->body = $body;
  }

  public static function fromArray( array $array )
  {
    // TODO: Validate $array with `filter_var_array`

    return new self($array['to'], $array['subject'], $array['body']);
  }

  public function send()
  {
    // TODO: Implement send() function
  }
}

$mail = Email::fromArray($_POST);
$mail->send();

PS: этот пример в PHP5, он не работает в PHP4.

0 голосов
/ 13 декабря 2010
<?php

class Email {

    public $data=array();

    function __construct($array=array())
    {
        foreach($array as $key=>$value)
        {
            $this->data[$key] = $value; 

        }
        return (object) $this->data; /* :D */
    }

    function get($key='')
    {
        return $this->data[$key];
    }
}

$foo = new Email($_POST);

echo $foo->get('email');
echo $foo->get('subject');
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...