Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Cum se face in OOP
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Subiectul anterior :: Subiectul următor  
Autor Mesaj
saitek



Data înscrierii: 23/Sep/2007
Mesaje: 446

Trimis: Vin Noi 30, 2007 5:39 pm    Titlul subiectului: Cum se face in OOP  

Am studiat un pic OOP si mi sa parut extrem de interesant,acuma cum sunt nou :oops: ,vreau sa tiu daca se poate ceva de genu:
Cod:
class general{
   function pre_post($pos){
      $_POST[$pos];
   }
}


Ok functia aia as vrea sa o folosesc sa preie un anume post,si acuma de exemplu am un
<input type="text" name="bunica">
cum as putea sa fac ceva de genu $general ->pre_post('bunica');

si acolo unde am post bunica sa pot pune ce nume vreau eu...si atunci din <input type="text" name="nume"... sa preie,poate ati zice ca sunt nebun,stiu ca asa este :lol: ,dar la ce mar ajuta o asemenea functia,pai sa zicem in an intelege mai bien OOP,si de exemplu ar fii frumos cand ai avea un INSERT INTO sa pui $general ->pre_post('din_Care_sa_preiei');,ar ajuta in multe lucruri asta unde ar trebuii sa folosesti $_post..Multumesc :oops: sper sa nu imi iau injuraturi :cry: era doar o idee,vreau sa stiu daca e realizabila,si da e idee de aia cand ai 50 si ceva de ore stand up :P
Sus  
flubber



Data înscrierii: 14/Mar/2006
Mesaje: 237
Locație: Bucuresti

Trimis: Vin Noi 30, 2007 6:14 pm    Titlul subiectului:  

cred ca ceea ce vrei sa faci tu e un accesor


class general {
public static function pre_post($post_value) {
if (isset($_POST[$post_value])) {
return $_POST[$post_value];
}
return null;
}
}

echo general::pre_post('aValue');
Sus  
saitek



Data înscrierii: 23/Sep/2007
Mesaje: 446

Trimis: Sâm Dec 01, 2007 6:58 am    Titlul subiectului:  

Mii de multumiri,si mai am o problema de care mam ivit.
Cod:
class general{
   function say_bold($say){
      echo '<b>'.$say.'</b>';
   }
   function num_select($name,$num,$d,$or){
      echo '<select name="'.$name.'">';
      for ($i = $d; $i <= $num; $i+=$or){
         echo '<option value="'.$i.'">'.$i.'</option>';
      }
      echo '</select>';
   }

Eh acuma incep asa:
Cod:
$general = new general();
$general->num_select("zile",31,1,1);

si acuma vreau ce ii intre <option>ASTA DE AICI</option>,as vrea ca "ASTA DE AICI" sa fie cu bold,si anume am o functie acolo pentru bold,stiu ca as putea sa folosesc direct <b>,dar vreau sa stiu cum e cand le imbini mai multe :P,daca e posiil asa ceva .THX :oops:
Sus  
flubber



Data înscrierii: 14/Mar/2006
Mesaje: 237
Locație: Bucuresti

Trimis: Sâm Dec 01, 2007 3:23 pm    Titlul subiectului:  

codul se rescrie asa:

Cod:
class general{
   function say_bold($say){
      return '<b>'.$say.'</b>';
   }
   function num_select($name,$num,$d,$or){
      echo '<select name="'.$name.'">';
      for ($i = $d; $i <= $num; $i+=$or){
         echo '<option value="'.$i.'">'.$this->say_bold($i).'</option>';
      }
      echo '</select>';
   }


insa, ar fi bine sa separi partea de logica de cea de prezentare daca tot ai facut clase; num_select ar putea sa-ti returneze un array asociativ, avand ca si cheie value din option, valoarea sa fie ce apare in drop-down; in felul asta, poti sa schimbi usor look-ul unei pagini web modificand html-ul/css-ul - adica ceea ce trebuie de fapt sa se schimbe, datele sunt aceleasi
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 630
Locație: Drobeta Turnu Severin

Trimis: Sâm Dec 01, 2007 7:36 pm    Titlul subiectului:  

@flubber mi-a placut ce-ai spus (am citit si prin alte parti) si am incercat sa vad cum e :)
Vreau sa intreb : asta e separare buna intre logica si afisare sau e mult mai complicat ?
Mai bine banuiesc ca se poate da' , asta e ideea ?
Pentru ca acum nu mi se pare mare scofala dar daca mai multi spun acelasi lucru si ... cum sa spun ... nu sunt ageamii, stiu ce spun !

Poti pe codul meu (sau cum vrei tu) sa-mi dai un exemplu de o posibila imbunatatire si care s-ar face cu efort mai mic, decat in cazul codului lui @saitek ?
Asta pentru ca am clase diferite de logica si afisare.

Cod:
<?php

class logic1
{

  function gen_num1($start = 1, $max = 10, $pas = 1 )
  {
   $intors = array();
   for ($i = $start; $i <= $max; $i+=$pas)
   {   
      $intors[$i] = 'Numarul '.$i;
   }
   return $intors;
  }
 
 function gen_alpha1 ($start = 65 , $max = 90, $pas = 1 )
 {
   $intors = array();
   for ($i = $start; $i <= $max; $i+=$pas)
   {   
      $intors[chr($i)] = 'Litera '.chr($i);
    }
   return $intors;
 }

}     


class layer1
{

   function say_bold1 ($txt='', $say = false)
   {
      $ret = '<b>'.$txt.'</b>';
      if ($say) echo $ret;
      return $ret;
   }
   

   function say_sel1 ($arr=array(), $say = false, $name = 'sel1', $class = 'cls1', $bold = true ) 
   {
      $ret =  "<select name=\"".$name."\" class=\"".$class."\"> \n";
      foreach ($arr as $key => $val)
      {
         $val1 = ($bold) ? $this->say_bold1($val) : $val ;
         $ret .= "<option value=\"".$key."\">".$val."</option> \n" ;      
      }
      $ret .= "</select> \n ";
      if ($say) echo $ret;
      return $ret;
   }

}   


$lg = new logic1();

$h = new layer1();

$h -> say_sel1($lg->gen_num1(5,15,2), true, 'Selectia1');

$h -> say_sel1($lg->gen_alpha1(65,75,1), true, 'Selectia2');

?>


@saitek, vezi poate te ajuta si pe tine
Sus  
flubber



Data înscrierii: 14/Mar/2006
Mesaje: 237
Locație: Bucuresti

Trimis: Sâm Dec 01, 2007 9:57 pm    Titlul subiectului:  

codul tau mi se pare ok, insa eu as prefera sa folosesc un template engine ( smarty spre exemplu)

in functie de complexitatea aplicatiei, pentru code reuse, separarea partilor de logica, date, prezentare eu zic ca e necesar sa folosesti un framework (http://en.wikipedia.org/wiki/Web_application_framework)
daca ti-e peste mana sa inveti unul, iti poti construi unul, dar nu e tocmai simplu
Sus  
dechim



Data înscrierii: 10/Mai/2005
Mesaje: 630
Locație: Drobeta Turnu Severin

Trimis: Sâm Dec 01, 2007 10:38 pm    Titlul subiectului:  

Multumesc, acum continui sa sap la codeigniter.
Chestia asta ma ajuta sa inteleg un pic cum procedeaza framework-ul.
Pana la urma o sa ma prind eu de ce un astfel poate fi refolosit mai usor decat
unul care rezolva aceeasi problema cu linii mai putine dar alambicat.
Deja cred ca mi-am raspuns.
Sus  
saitek



Data înscrierii: 23/Sep/2007
Mesaje: 446

Trimis: Sâm Dec 01, 2007 11:03 pm    Titlul subiectului:  

Ok dupa cum am spus aici http://www.phpromania.net/forum/viewtopic.php?t=14134-Mai_multe_conexiuni.html,se pare ca problema nui de la mysql..problema o creeza asta $general = new general(); care se afla in config1.php ..clasa contine o functie ce face un select din sql...
Sus  
saitek



Data înscrierii: 23/Sep/2007
Mesaje: 446

Trimis: Sâm Dec 01, 2007 11:34 pm    Titlul subiectului:  

solved
Sus  
carco



Data înscrierii: 27/Mai/2004
Mesaje: 2796
Locație: Bucuresti

Trimis: Mar Dec 04, 2007 6:10 am    Titlul subiectului:  

[offtopic]
incercati sa nu folositi echo in functii/proceduri, adica daca-ti faci (sa zicem) un helper care genereaza un <select><option>....</select>, nu pune echo in functie, fa functia sa intoarca acel rezultat, echo pui in "view"

Cod:
echo html::select('culori',array(1=>'Alb',2=>'Negru'));


[/offtopic]
Sus  
saitek



Data înscrierii: 23/Sep/2007
Mesaje: 446

Trimis: Mar Dec 04, 2007 10:52 am    Titlul subiectului:  

era doar un exemplu eu folosesc extrem de mult return :o
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community