نمایش نتایج 1 تا 40 از 165

نام تاپیک: آموزش برنامه نویسی OOP

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #8

    نقل قول: آموزش برنامه نویسی OOP

    بی شک یکی از مشکلات برنامه نویسان Valid کردن اطلاعات ورودی هست . معمولا هم ما با استفاده از IF ... ELSE کار خودمونو راه می ندازیم. اما بهتره از Strategy Pattern استفاده بشه . بی شک به شما خیلی بیشتر کمک می کنه . برنامه هم خانایی بیشتری پیدا می کنه .
    بهتره بریم سر اصل مطلب .
    validator.php
    <?php
    /**
    * کلاس اصلی
    */
    class Validator {
    /**
    * Private
    * $errorMsg نگهداری خطا ها در صورت وجود
    */
    var $errorMsg;
    //! A constructor.
    /**
    * ساخت یک شی validator جدید
    */
    function Validator () {
    $this->errorMsg=array();
    $this->validate();
    }
    /**
    * @return void
    */
    function validate() {

    }
    /**
    * اضافه کردن خطا به آرایه
    * @return void
    */
    function setError ($msg) {
    $this->errorMsg[]=$msg;
    }
    /**
    * بازگشت درست و غلط
    * @return boolean
    */
    function isValid () {
    if ( isset ($this->errorMsg) ) {
    return false;
    } else {
    return true;
    }
    }
    /**
    * بدست آوردن خطا ها
    * @return string
    */
    function getError () {
    return array_pop($this->errorMsg);
    }
    }
    /**
    *valid کردن username
    */
    class ValidateUser extends Validator {
    /**
    * $user متغیر مورد نیاز
    */
    var $user;
    /**
    * اخت یک شی validatoruser جدید
    * @param $user the string to validate
    */
    function ValidateUser ($user) {
    $this->user=$user;
    Validator::Validator();
    }
    /**
    * Validates کردن username
    * @return void
    */
    function validate() {
    if (!preg_match('/^[a-zA-Z0-9_]+$/',$this->user )) {
    $this->setError('Username contains invalid characters');
    }
    if (strlen($this->user) < 6 ) {
    $this->setError('Username is too short');
    }
    if (strlen($this->user) > 20 ) {
    $this->setError('Username is too long');
    }
    }
    }
    /**
    * Validate کردن password
    */
    class ValidatePassword extends Validator {
    /**
    * $pass متغیر مورد نیاز
    */
    var $pass;
    /**
    * $conf متغیر تکرار کلمه عبور
    */
    var $conf;
    /**
    * ساخت ValidatePassword شی جدید
    * @param $pass the string to validate
    * @param $conf to compare with $pass for confirmation
    */
    function ValidatePassword ($pass,$conf) {
    $this->pass=$pass;
    $this->conf=$conf;
    Validator::Validator();
    }
    /**
    * Validates کردن password
    * @return void
    */
    function validate() {
    if ($this->pass!=$this->conf) {
    $this->setError('Passwords do not match');
    }
    if (!preg_match('/^[a-zA-Z0-9_]+$/',$this->pass )) {
    $this->setError('Password contains invalid characters');
    }
    if (strlen($this->pass) < 6 ) {
    $this->setError('Password is too short');
    }
    if (strlen($this->pass) > 20 ) {
    $this->setError('Password is too long');
    }
    }
    }
    /**
    * Validates کردن email address
    */
    class ValidateEmail extends Validator {
    /**
    * $email متغیر مورد نیاز
    */
    var $email;
    /**
    * جدید ValidateEmail ساخت شی
    * @param $email the string to validate
    */
    function ValidateEmail ($email){
    $this->email=$email;
    Validator::Validator();
    }
    /**
    * Validates کردن email address
    * @return void
    */
    function validate() {
    $pattern=
    "/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+/";
    if(!preg_match($pattern,$this->email)){
    $this->setError('Invalid email address');
    }
    if (strlen($this->email)>100){
    $this->setError('Address is too long');
    }
    }
    }
    ?>

    index.php
    <?php
    if ( $_POST['register'] ) {
    require_once('lib/Validator.php');
    $v['u']=new ValidateUser($_POST['user']);
    $v['p']=new ValidatePassword($_POST['pass'],$_POST['conf']);
    $v['e']=new ValidateEmail($_POST['email']);
    foreach($v as $validator) {
    if (!$validator->isValid()) {
    while ($error=$validator->getError()) {
    $errorMsg.="<li>".$error."</li>\n";
    }
    }
    }
    if (isset($errorMsg)) {
    print ("<p>There were errors:<ul>\n".$errorMsg."</ul>");
    } else {
    print ('<h2>Form Valid!</h2>');
    }
    } else {
    ?>
    <h2>Create New Account</h2>
    <form action="<?php echo ($_SERVER['PHP_SELF']); ?>" method="post">
    <p>Username: <input type="text" name="user"></p>
    <p>Password: <input type="password" name="pass"></p>
    <p>Confirm: <input type="password" name="conf"></p>
    <p>Email: <input type="text" name="email"></p>
    <p><input type="submit" name="register" value=" Register "></p>
    </form>
    <?php
    }
    ?>

    فکر نمی کنم نیاز به توضیح خاصی باشه .
    موفق باشید.
    فایل های ضمیمه فایل های ضمیمه

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •