Не пойму как создать наблюдателя(observer)

MO
На сайте с 09.04.2012
Offline
20
442

Помогите создать наблюдателя

Есть форма имя, пароль. Наблюдатель должен отследить правильные и не правильные вводы и записать результат в файл

Вот код который я составил

interface Observer{

public function notify( Observable $objSource, $objArguments );
}
interface Observable{
public function addObserver(Observer $objObserver, $strEventType );
public function fireEvent( $strEventType );
}
class FormValidator extends DB implements Observable{
const EVENT_FORM_VALID = 1;
const EVENT_FORM_INVALID = 0;
protected $strName;
protected $arrObserver= array() ;

public function setEmailAddress($strNam) {
$this->strNam = $strNam;

}

public function getEmailAddress() {
return $this->strNam;
}

public function validate() {
if(isset($_POST['name']) && $_POST['name']!='' && isset($_POST['pass']) && $_POST['pass']!=''){

$strEmailAddress=mysql_escape_string(stripslashes(trim(strip_tags($_POST['name']))));;
$pass=mysql_escape_string(stripslashes(trim(strip_tags($_POST['pass']))));;

$this->strNam = $strEmailAddress;
$conn=self::getInstance()->bd();
$result="SELECT name FROM user where name='$strEmailAddress' and pass='$pass'";
$snm=$conn->query($result);
$myrow=$snm->fetch(PDO::FETCH_ASSOC);

if( $myrow{name}==$this->strNam ){
$this->fireEvent( FormValidator::EVENT_FORM_VALID );
} else{
$this->fireEvent( FormValidator::EVENT_FORM_INVALID );
}
}else{echo'Введите логин и пароль';}
}

public function addObserver( Observer $objObserver, $strEventType ) {
$this->arrObserver[] = $objObserver;
}

public function fireEvent( $strEventType ) {
foreach($this->arrObserver as $obj){
$obj->notify($this);
}
}
}
$objValidator = new FormValidator();
$objValidator->validate();


---------- Добавлено 13.05.2012 в 13:32 ----------

Приведите хотя бы понятный пример, что бы я мог разобраться
Обмен WM на грн.
T
На сайте с 01.10.2004
Offline
73
#1

Ну так надо реализовать класс наблюдателя для начала :)

Потом инстанцировать его и добавить в FormValidator. И еще в fireEvent вы передаете $strEventType, который никак не используете. И наблюдатель не узнает, какой у парня был конец :)

---------- Добавлено 13.05.2012 в 23:42 ----------

и раз уж используете PDO, зачем такой говнокод городить?


$strEmailAddress=mysql_escape_string(stripslashes(trim(strip_tags($_POST***91;'name'***93;))));;
$pass=mysql_escape_string(stripslashes(trim(strip_tags($_POST***91;'pass'***93;))));;



---------- Добавлено 13.05.2012 в 23:48 ----------

isset($_POST***91;'name'***93;) && $_POST***91;'name'***93;!=''
и пр.

это эквивалентно empty($_POST['name']).

---------- Добавлено 13.05.2012 в 23:51 ----------

И вы не прислушались к совету /ru/forum/comment/10391324

и нагородили ненужное наследование.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий