Anonymní profil AralXD – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil AralXD – Programujte.comAnonymní profil AralXD – Programujte.com

 

Příspěvky odeslané z IP adresy 90.177.10.–

PHP › OOP Formulář - jdu na to dob…
22. 2. 2012   #153956

#2 pajousek


Děkuji za cenné rady :)

1. Máš pravdu, snažím se, aby názvy tříd měly aspoň trochu hlavu a patu, a zde mě to bohužel netrklo, že jednotné číslo bude přeci jen logický správnější :)

2. No s vlastnostma viditelnosti ještě trochu bojuji. I když tak nějak teoretický vím, která co představuje, prakticky se stále bojím někde používat třeba Private vlastnosti, ale na to časem určitě kápnu.

3. Právě, že v tom nějak problém nevidím, a parser taky nic neháže, tak nevím.

4. V tom máš pravdu, automaticky jsem tam hodil dědičnost, vlastně ani nevím proč. 

PHP › PHP OOP
22. 2. 2012   #153916

Tak když už tady píše, tak poradím i v jiné věcí.

Dneska se už proměnná  neinicializuje pouze jako  

var $promena;

Ale tuším že od PHP5 se pracuje i s její viditelností, tedy proměnné se poté vytvářejí takto:

public $verejna;
protected $chranena;
private $soukroma;

A také se od PHP5 zapisuje konstruktor jinak ( funguje sice stejně, ale už je to u PHP standart ) :

function __construct( parametry ) {

}
PHP › OOP Formulář - jdu na to dob…
22. 2. 2012   #153913

Zdravím,

momentálně se snažím pořádně naučit PHP objektově, a jelikož mám nejraději učit se na něčem za chodu, snažím se napsat univerzální tvorbu formulářů, s následnou validací. Zatím mám uděláno pouze tvorbu formulářových Inputů a následné přidělené vlastních validačních pravidel.

Chtěl bych od vás proto radu, jestli na to jdu vůbec aspoň trochu dobře, abych pak nezjistil, že jsem se celou dobu učil psát OOP špatným způsobem. Proto děkuji za prolouskání mého kódu a udělení nějaký rad, zda-li je kód vůbec použitelný.

Díky.

PHP kód:

<?php

class Forms {
  
  /* 
   * Defaultni nastaveni pravidel pro vsechny formularova data 
   * Tyto data muzete pote libovolne upravovat, viz funkce teto tridy zvana 'add_rule'
   * 
   */
  public $rules = Array ( "DEFAULT" => Array ( "MAXLENGHT" => "20", 
                                               "MINLENGHT" => "10",
                                               "REQUIRED" => TRUE )
                        ); 
  /* Funkce umoznujici nastaveni pravidel pro formularova data 
   * Nastaveni se zapisuje ve tvaru:
   *  
   * AddRule ( "PRAVIDLO", "HODNOTA" ) 
   * popripade vicenasobne pridani pravidel:
   * AddRule ( "PRAVIDLO_1", "HODNOTA_1", "PRAVIDLO_2", "HODNOTA_2", atd... )
   *  
   */
  public function AddRule( $rules ) {
    $rules = func_get_args(); 
    foreach($rules as $key => $value) {
      if($key % 2 == 0) $this->rules["USER_DEFINED"][$value] = isset($rules[$key++]) ? $rules[$key++] : null; 
    }
    $this->rules[$this->id] = array_merge( $this->rules["DEFAULT"], $this->rules["USER_DEFINED"] );
    return $this;   
  }
  
  /* ADD CHILD
   * 
   * Funkce dostava vygenerovany formularovy input a formularovy label, ktery spoji a vypise na obrazovku vysledny formularovy prvek
   * 
   */
  public function AddChild( $control, $label ) {
    echo $label -> label . $control -> form;
  }
/* ADD TEXT INPUT
 * 
 * Funkce dovoluje vytvorit formularovy prvek typu - <input type="text" />
 * 
 * Pri vytvareni tridy predame pomoci parametru vsechny mozne nastaveni, ve tvaru:
 * AddTextInput ( $name, $label, $value, $cls, $id )
 * Tedy napr.:
 * AddTextInput ( "username", "Uzivatelske jmeno", "Zadejte uz. jmeno", "usernam_trida", "username_id" );
 * 
 * Tyto informace predame tride TextInput, ktera vygeneruje vysledny formularovy input
 * Dalsi doplnujici info predame tride Label, ktera nam vygeneruje vysledny LABEL ve tvaru <label for="id"> $label </label>
 * Vysledek spojime pomoci funkce AddChild a konecny formularovy prvek vypiseme
 * 
 */
  public function AddTextInput( $name = NULL, $label = NULL, $value = NULL, $cls = NULL, $id = NULL ) {
    if ( $id == "" ) { $id = $name; }
    $this -> id = $id;
    $control = new TextInput( $type = "text", $name, $value, $cls, $id );
    $label = new Label ( $label, $id );
    $this -> AddChild( $control, $label );
    return $this;
  }

/* ADD PASSWORD INPUT
 * 
 * Totozna jako funkce AddTextInput
 * 
 */
  public function AddPasswordInput( $name = NULL, $label = NULL, $value = NULL, $cls = NULL, $id = NULL ) {
    if ( $id == "" ) { $id = $name; }
    $this -> id = $id;
    $control = new TextInput( $type = "password", $name, $value, $cls, $id );
    $label = new Label ( $label, $id );
    $this -> AddChild( $control, $label );
    return $this;
  } 

/* ADD EMAIL INPUT
 * 
 * Totozna jako funkce AddTextInput
 * 
 */
  public function AddEmailInput( $name = NULL, $label = NULL, $value = NULL, $cls = NULL, $id = NULL ) {
    if ( $id == "" ) { $id = $name; }
    $this -> id = $id;
    $control = new TextInput( $type = "text", $name, $value, $cls, $id );
    $label = new Label ( $label, $id );
    $this -> AddChild( $control, $label );
    return $this;
  } 
  
 /* ADD SUBMIT INPUT
 * 
 * Totozna jako funkce AddTextInput
 * 
 */
  public function AddSubmitInput( $name = NULL, $label = NULL, $value = NULL, $cls = NULL, $id = NULL ) {
    if ( $id == "" ) { $id = $name; }
    $control = new TextInput( $type = "submit", $name, $value, $cls, $id );
    $label = new Label ( $label, $id );
    $this -> AddChild( $control, $label );
    return $this;
  } 
  
}

/* TEXT INPUT
 * 
 * Trida dostava pomoci parametru uzivatelsky definovane informace o formularovem inputu
 * A nasledne z nej sklada dany formularovy prvek a predava zpet
 * 
 */
class TextInput extends Forms {
  public function __construct( $type, $name, $value, $cls, $id ) {
    $this -> form = '<input type="'.$type.'" name="'.$name.'" value="'.$value.'" class="'.$cls.'" id="'.$id.'" onChange="validate(this)" />'."\n" . '<div class="validate_input" id="'.$id.'_validate"></div>'."\n"; 
  }
}

/* LABEL
 * 
 * Trida dostava pomoci parametru uzivatelsky definovane informace o formularovem labelu
 * A nasledne z nej sklada dany formularovy label a predava zpet
 * 
 */
class Label extends Forms {
  public function __construct( $label, $id ) {
    if ( $label != "" ) $this -> label = "\t".'<label for="'.$id.'">'.$label.'</label>';
    else $this -> label = "";
  }
}

?>

HTML Vytváření formulářů, příklad:

$forms = new Forms();
        $forms -> AddTextInput("username", "Vase jmeno", "Vlozte sve jmeno", "input_cls", "input_id") -> AddRule( "MAXLENGHT","50" );
        $forms -> AddPasswordInput("password", "Vase heslo", "Vlozte sve jmeno 2", "input2_cls", "input2_id") -> AddRule( "MAXLENGHT","40" );
        $forms -> AddEmailInput("email", "Vas emial:", "Vlozte svuj email", "email_cls", "email_id") -> AddRule( "MAXLENGHT","40", "MINLENGHT","30" );
        $forms -> AddSubmitInput("submit", "", "ODESLAT", "submit_cls", "submit_id");
AralXD
PHP › PHP Pole - posunutí pole
23. 12. 2011   #151591

Zdravím.

Mám například takovéto pole:

Array ( [0] => JABLKO [1] => BANAN [2] => HRUSKA [3] => TRESNE)

Ale potřebuji z něj následně vytvořit takovéto pole:

Array ( [JABLKO] => BANAN [HRUSKA] => TRESNE )

Jak toho docílím ?

Díky.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý