 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| 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 |
|
| |
|