Разяснения по темата за извеждането на променливи

dakata__92

Super Moderator
TryMe отварям тази тема, за да не цапаме другата както се изрази ти :) Та ще ми разясниш ли защо не е правилно това което в предната тема си говорихме ? :) Стана ми доста интересно защо не е правилно да се прави така ?

http://web-tourist.net/forum/viewtopic.php?t=120707&start=24
 
Аз също искам да се включа ...

защо да отварям 458734895345 тъпи <?php и съответно 458734895345 да го затварям ?> след като мога 1 форма да я представя в 1 echo ?

не се изясних .. защо да правя

1:
<?php echo " $news['example']"; ?>

2:
<?php echo " $news['example']"; ?>

3:
<?php echo " $news['example']"; ?>

след като мога ето така

<?php echo "1 $news['example'] 2 $news['example'] 3 ['example']"; ?>

?!
 
Не мисля че имате сайтове, които имат по 2000+ човека онлайн, че да спорите за такива дреболии. За да е най-нагледно, има шорт тагове, които се ползват в такива ситуации.
<?=$var?>


Ако ще се хващате толкова за кое е грешно и кое вярно, един от горните примери:
Код:
<?php echo "1 $news['example'] 2 $news['example'] 3 ['example']"; ?>
Е от грешен по-грешен.
Обработката на двойни кавички е по-бавна от тази на единичните, тъй като не е ясно изразено кое е променлива и т.н.
Правилния вариант на горния код е
<?='1'.$news['example'].'2'.$news['example'].'3'?>

И все пак накрая всичко опира до стил на писане и четливост на сорса.
 
Въпроса не е в това кой какви сайтове има, а в това каква е разликата ! Запитах се защото аз говоря не за скорост а за четливост на кода ! Защо просто не се генерира HTML кода с еho примерно и да имаш <?php ?>
 
Е окей, щом визираш само четливост.
Ти ориентираш ли е, ако целия ти сайт е един голям миш-маш набутан в echo? :)
По същата логика може да си зададеш и въпроса защо в темплейт енджините, например smarty, се пише {VAR}
На останалите въпроси защо е лоша практика коментара в другата тема, отговорих в предишното мнение.
 
Не е добра практика да се влага HTML в PHP директно с echo, защото първо трябва да се обработи PHP кода, че чак тогава да изведе HTML-а. Но не това главна причина.


Кажи ми кое четеш по-лесно:

Вариант 1:

PHP:
echo "<a href=\"$var[$var2[1]]\">ПРИМЕР</a>";
първото, което е това няма да работи по този начин. В този си вид, на променливата от тип array трябва да се сложат 2 къдрави скоби {$var[$var2[1]]} иначе ще я прочете като string, а да не говорим за променлива от рода на $var['link']

Вариант 2:

PHP:
echo "<a href=\"".$var[$var2[1]]."\">ПРИМЕР</a>";
Е на това, ако му се вика четимост...

Вариант 3:

PHP:
echo "<a href='$var['link']'>ПРИМЕР</a>";

Вариант 4:

PHP:
<a href="<?php echo $var['link']; ?>">ПРИМЕР</а>
тука ясно се вижда, кое е HTML и кое е отделено с PHP.

Аз не мога да разбера, защо си мислите, че "да хвърчат" php тагове е лошо? Това не е забавяне.

А и мисля, че е основно правило да се дели HTML от каквото и да е.

Дали е приятно да видиш такъв код ?

PHP:
$variable = 1;

if($variable > 0){
       echo "<h3>The variable is bigger than 0</h3><br />";
       echo "<form action=\"page.php\" method=\"POST\">";
       echo "<input type=\"text\" name=\"var\" />";
       #тука още глупости
}

вместо да си го напишеш начисто

PHP:
$variable = 1;

if($variable > 0){
         ?>
         <h3>The variable is bigger than 0</h3>
         <br />
         <form action="page.php" method="POST">
         <input type="text" name="var" />
         
         <?php
}
 
Вариант 1, 2, 3, 4 можеш просто да ги направиш така :
PHP:
$promenliva = $var['link'];
echo "<a href='$promenliva'>ПРИМЕР</a>";

Не е нужно на всеки ред да слагаш echo :

PHP:
//Коментар еди кво си ! 
$variable = 1;i
f($variable > 0)
{       
echo "<h3>The variable is bigger than 0</h3><br />  
<form action=\"page.php\" method=\"POST\">     
<input type=\"text\" name=\"var\" />";       
#тука още глупости
}

Не съм казал, че не е правилно деленето, но горе на страницата разширението е php, не html. На мен лично ми е 300-та пъти по-удобно до си сложа HTML кода в echo, след което си добавям променливите на title на мета таговете и така нататак... Ако са толкова проблемни кавичките слагаш единични, въпреки, че според мен един цикъл вадещ информация от базата бави страницата мноого повече от колкото голям брой двойни кавички :) Не искам да споря, просто искам дискусията да се проведе така, че да разбера кой е правилния вариант ?
 
Може да е по-удобно за някой, но не е четливо.
Ами ако не работиш сам по даден сайт?
Ако трябва да сменяш темплейти?
Това дали горе е .php, .html няма никакво значение, ако ще и .web-tourist да е.

"Разделно писане на код" - наречи го ако искаш неписано правило.
PHP отделно от HTML

По същата логика пишеш CSS-a в отделен файл, JS-а също, плъгините и библиотеките към PHP и JS са отделни и т.н, а не буташ абсолютно всичко във един файл.

Един код трябва да е разбираем и лесен за ориентиране.
Като дойде проект, който примерно трябва да се довърши, да не ми губи 2 часа от времето да разбера какво аджеба е искал колегата преди мен да направи, а да мога да го свърша за това време и да продължа към останалите таскове за деня.
 
@dakata, защо трябва да декларирам нова променлива, за да я използвам някъде ? Променливите не трябва да се използват безразборно. Там, където можеш да ползваш директно някаква стойност, я използваш, вместо да я записваш на ново място в паметта.
Един вид в паметта образуваш това:

БИТ1 ----------- БИТ2
стойност ------- стойност в променлива


И как да водим тема като ти обясняваме, хора, с повече години опит, че това е практическо по-добре, както от страна на самия тебе, така и от страна на друг, който примерно ти поддържа сайта(прочети поста на Soul_Stealler).
И вместо да ползвам echo за много редове, то по-добре да ползвам heredoc.
 
Въобще html не трябва да има в променливи или PHP логика в html кода. Това е много лоша практика и води до страшно объркан, нечетим код, който е толкова тясно обвързан с дизайна, че реално трябва да пренапишеш сайта, за да смениш дизайна.

Този спор е безсмислен. Все едно да спорите дали е по-добре да се блъснете в бетонна стена или в тухлена.

PHP в HTML кода може да има единствено за неща като показване на променливи (генерирани в друг файл само с PHP код). И това PHP се свежда само до echo и if. В този случай винаги си отваряйте и затваряйте php таговете защото:
1. Не се грижиш да ескейпваш кавички
2. Не прецакваш syntax highlighting-a и показването на грешки на редактора
3. Не пращаш всичкия html на куп, а даваш възможност на сървъра да го праща докато се изпълнява

Третото е и причината защо безразборната употреба на Output буфера (ob_start()) е лошо нещо.

@TryMe какво е бит?
 
http://bg.wikipedia.org/wiki/%D0%91%D0%B8%D1%82_(%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)

Но едва ли не знаеш какво е това, и едва ли не знаеш, че всяка променлива си отделя място в паметта.
 
TryMe каза:
http://bg.wikipedia.org/wiki/%D0%91%D0%B8%D1%82_(%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)

Но едва ли не знаеш какво е това, и едва ли не знаеш, че всяка променлива си отделя място в паметта.

Знам :) Но прочете ли го това дето си ми пратил? :) Защото една променлива не е само 1 бит.
 
Аз не съм писал, че заема 1 бит. Просто така му го написах.
Представи си го като колонки и под тях информацията.

Не ми се занимава да му го представям като табличка.
Ако звучи подлъгващо, се извинявам, но не съм искал да кажа, че една променлива заема 1 бит.
 
TryMe каза:
Аз не съм писал, че заема 1 бит. Просто така му го написах.
Представи си го като колонки и под тях информацията.

Не ми се занимава да му го представям като табличка.
Ако звучи подлъгващо, се извинявам, но не съм искал да кажа, че една променлива заема 1 бит.

Ок, просто понеже пишеше бит1 за едната и бит2 за другата и се озадачих :)
 
аз бих казал за темата че винаги най горе във файла преди доктаипа даже си въвеждам целия пхп код относно функционалност и тем подобни и надоло в html искарвам само резултата или както казва storm използвам if else за някой допълнителни неща и се полочава доста чист и четим текст и много по лесно се сменят дизайните.
 
StormBreaker каза:
TryMe каза:
Аз не съм писал, че заема 1 бит. Просто така му го написах.
Представи си го като колонки и под тях информацията.

Не ми се занимава да му го представям като табличка.
Ако звучи подлъгващо, се извинявам, но не съм искал да кажа, че една променлива заема 1 бит.

Ок, просто понеже пишеше бит1 за едната и бит2 за другата и се озадачих :)

Това се опитах да прозвучи като.. място в паметта 1 и място в паметта 2, но явно не се получи :D
 
antique каза:
аз бих казал за темата че винаги най горе във файла преди доктаипа даже си въвеждам целия пхп код относно функционалност и тем подобни и надоло в html искарвам само резултата или както казва storm използвам if else за някой допълнителни неща и се полочава доста чист и четим текст и много по лесно се сменят дизайните.

Все едно ... в един файл е :D
 
Първо да разясня отново, че темата не е за да споря с някой от вас, че така е по-добре, а за да разбера кое е ПО-ДОБРИЯТ вариант ! Много хора ми го казвате, затова мисля да си взема поука от казаното :) Цялата работа дойде от думите на TryMe, че е лоша практика, а както знаят абонатите от форума с които активно комуникирам съм доста любопитен, и искам да знам защо :D :D :D Благодарен съм за разясненията от всички ще правя това разграничение вече :)
 

Горе