OOP в PHP для начинающего

Discussion in 'PHP' started by up3gp, 4 Apr 2010.

  1. up3gp

    up3gp New Member

    Joined:
    19 Mar 2010
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Учусь использовать классы и методы.

    У меня много вопросов типа "а нафиг оно?" и почти нет типа "как это сделать".

    Вот тут написал маленьки класс для создания форм.
    Прокомментируйте его пожалуйса) ==>как вам оно=>мое начало.

    PHP:
    <?php


    class Form {
        
        private 
    $method;
        private 
    $type;
        private 
    $field_type;
        private 
    $field_name;
        private 
    $field_value;
        private 
    $field_class;
        
        public function 
    form_open($method,$type)
        {
            
    $this->method $method;
            
    $this->type $type;
            return 
    "<fomr method='{$this->method}' '{$this->type}'>";
        }
        
        
        public function 
    field_create($field_type,$field_name,$field_value,$field_class)
        {
            
    $this->field_type $field_type;
            
    $this->field_name $field_name;
            
    $this->field_value $field_value;
            
    $this->field_class $field_class;
            
            return 
    "<input type='{$this->field_type}' name='{$this->field_name}' value='{$this->field_value}' class='{$this->field_class}'>";
        }

        public function 
    form_close()
        {
            return 
    "</form>";
        }
        
        
    }


    ?>
     
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    up3gp опечатка fomr вместо form

    Взять процедуры, написать вокруг них class Super_Puper_Class - еще не ООП
     
    _________________________
  3. up3gp

    up3gp New Member

    Joined:
    19 Mar 2010
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Понимаю. Только не понимаю. Вот так.
     
  4. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Класс пустой + многое непонятно, зачем в нём вообще переменные ?

    А если я хочу задать input только для чтения, то что ?
     
  5. up3gp

    up3gp New Member

    Joined:
    19 Mar 2010
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Тоесть, я просто для вывода формы, использовал класс. Это могла сделать и обычная функция. А как тогда реализовать класс для создания форм, чтобы он был объекто ориентированным классом , а не процеДурным.
     
  6. up3gp

    up3gp New Member

    Joined:
    19 Mar 2010
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    я не думал об этом. Так как я такие поля не создаю. И скрытое тоже там не создаш)
    "зачем в нём вообще переменные ?

    " => сам не знаю. Я думал они там нужны)
     
    #6 up3gp, 4 Apr 2010
    Last edited: 4 Apr 2010
  7. up3gp

    up3gp New Member

    Joined:
    19 Mar 2010
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    Я ведь говорю какие у меня вопросы. А нафиг оно, задавать эти переменные в начале класса?
     
  8. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Тогда зачем вообще класс ?

    Можно использовать отдельную функцию.

    Вообще класс - "ниочём".

    -----upd
    Code:
    public 
    
    Зачем ?
    По дефолту он всегда паблик.
     
    #8 Deathdreams, 4 Apr 2010
    Last edited: 4 Apr 2010
  9. up3gp

    up3gp New Member

    Joined:
    19 Mar 2010
    Messages:
    7
    Likes Received:
    0
    Reputations:
    0
    пониманию.
    Хотел научиться, но вышла ерунда.
    А что в нем должно было быть к примеру? В классе для создания формы. Расскажите в теории кому не сложно.
     
  10. DTW

    DTW Banned

    Joined:
    11 May 2008
    Messages:
    221
    Likes Received:
    52
    Reputations:
    11
    Почитай ее книгу "Объектно-ориентированное программирование на PHP", написанную сотрудниками нашей студии Кузнецовым Максимом Валерьевичем и Симдяновым Игорем Вячеславовичем

    [​IMG]


    Я не профи

    объект класса формы может содержать другие объекты
    например объект класса элемент поля
    от него может быть порожденный новый объект класса
    текстового поле.

    PHP:

     
    class Form 
       
    {
           private 
    $element;
           private 
    $action;
           private 
    $method;
           private 
    $name;
           private 
    $value;
           
           public function 
    __construct($element,$action,$method,$name,$value)
           {
             
    $this->element=$element;
             
    $this->action=$action;
             
    $this->method=$method;
             
    $this->name=$name;
             
    $this->value$value
           }
           public function 
    cheak()
           {
               
           }
           
           public function 
    viewform()
           {
            
    $formview ="<form action='{$this->action}' method='{$this->method}' name='{$this->name}' >";
                echo 
    $formview
              
                   foreach(
    $this->element as $el)
                   {
                      
                      
                    
    $formview .=   $el->viewelement();
                       
                   }
               
                echo 
    "<input type='submit' value='{$this->value}'></form>";
           }
           public function 
    __toString()
           {
               
    $this->viewform();
           }
           
       }
       
       class 
    Field {
           protected 
    $style;
           protected 
    $class;
           protected 
    $name;
            public function 
    __construct($style,$class,$name
            {
                
    $this->style=$style;
                
    $this->class=$class;
                
    $this->name=$name;
            }
           
       }
       
       class 
    Finput  extends Field
       
    {
           private 
    $type;
           private 
    $value;
          
           
          public function 
    __construct($type,$value,$name,$style="",$class="")
          {
            
             
    parent::__construct($style,$class,$name);
              
    $this->type=$type;
              
    $this->value=$value;
             
          }
          public function 
    viewelement()
          {
              
    $viewelement="<input type='{$this->type}' value='{$this->value}'";
              if(!empty(
    $this->class)){ $viewelement .="class='{$this->class}'";}
              if(!empty(
    $this->style)){$viewelement .="style='{$this->style}'"; }
              
    $viewelement .="name='{$this->name}'";
              
    $viewelement .="/>";
              echo 
    $viewelement;
          }
       }

       
    $element = new Finput('text','textpole','my1');
       
    $element2 = new Finput('text','textpole2','my2');
      
       
    $form = new Form(array('element1'=>$element,'element2'=>$element2),'form.php','get','form1','send');
       
       
    $form->viewform();

     
    #10 DTW, 5 Apr 2010
    Last edited: 5 Apr 2010
    1 person likes this.
  11. Neoveneficus

    Neoveneficus Elder - Старейшина

    Joined:
    10 Apr 2008
    Messages:
    235
    Likes Received:
    126
    Reputations:
    23
    Ребят, а Вам не кажется, что это как-то геморройно отрисовывать формы таким образом?

    Прежде всего нужно определиться, какую задачу должен решать класс.

    Любая форма обычно связана с каким-то объектом: письмо, пользователь, запись в блоге. И я думаю, что нужно исходить именно от объекта. Например, ты скармливаешь конструктору формы экземпляр объекта - а он отрисовывает форму именно для этого объекта. Профит?