Автор Тема: Функции в PHP  (Прочетена 2310 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

gatakka

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 0
  • -Получени: 19
  • Публикации: 681
Функции в PHP
« -: 21 Януари 2010, 23:04:52 »
** Тази тема дискутира:: Функции в PHP **
Автор: Гатака
« Последна редакция: 14 Април 2015, 22:50:50 от Avalanche »
За да знаеш трябва да питаш,
но за да знаеш някой трябва да ти отговори на питанията.
Добре дошли в Научи Ме!

Lubaka

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 4
Отг:Функции в PHP
« Отговор #1 -: 21 Януари 2010, 23:14:28 »
Здравейте, имам странен проблем с функциите значи:

имам функция header_html() която се намира в functions.php и в index.php първо стартирам сесия след това инклудвам functions.php и след това пускам header_html() в нея пускам друга функция и тя е lang() която взима езика и го слага в сесия  "  $_SESSION[ ' lang ' ];  "  която я задавам в променлива $lang и проблема е че променливата я имам само и единствено в header_html() но не и в целия файл защо така
ето малко код

Код: PHP
  1. function lang() {
  2.         if ($_SERVER[ ' HTTP_HOST ' ] ==  " bg.mysite.net " ) {
  3.                 $_SESSION[ ' lang ' ]= ' bg ' ;
  4.         }
  5.         elseif ($_SERVER[ ' HTTP_HOST ' ] ==  " en.mysite.net " ) {
  6.                 $_SESSION[ ' lang ' ]= ' en ' ;
  7.                 }
  8.         else {
  9.                 $_SESSION[ ' lang ' ]= ' en ' ;
  10.         }
  11. require_once( ' includes/lang. ' .$_SESSION[ ' lang ' ]. ' .php ' );
  12. $lang = $_SESSION[ ' lang ' ];
  13. }
function my_header($title) {
     ?>
<!DOCTYPE html PUBLIC  " -//W3C//DTD XHTML 1.0 Transitional//EN "   " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
<html xmlns= " http://www.w3.org/1999/xhtml " >
<head> ... и т.н.

ей дано ме разбрахте :)
« Последна редакция: 14 Април 2015, 22:50:59 от Avalanche »

kerkenez

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 2
  • -Получени: 14
  • Публикации: 1205
Отг:Функции в PHP
« Отговор #2 -: 21 Януари 2010, 23:38:37 »
Изгледай урока за видимост на променливи.

Lubaka

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 4
Отг:Функции в PHP
« Отговор #3 -: 22 Януари 2010, 00:52:39 »
да знам за global но не става не е видима извън функцията header което не знам как така не иска

Код: PHP
  1. function lang() {
  2. if ($_SERVER[ ' HTTP_HOST ' ] ==  " bg.mysite.net " ) {
  3. $_SESSION[ ' lang ' ]= ' bg ' ;
  4. }
  5. elseif ($_SERVER[ ' HTTP_HOST ' ] ==  " en.mysite.net " ) {
  6. $_SESSION[ ' lang ' ]= ' en ' ;
  7. }
  8. else {
  9. $_SESSION[ ' lang ' ]= ' en ' ;
  10. }
  11. require_once( ' includes/lang. ' .$_SESSION[ ' lang ' ]. ' .php ' );
  12. global $lang = $_SESSION[ ' lang ' ];
  13. // пробвах и
  14. global $lang;
  15. }

с  " & "  ми дава парс ерор като я слагам примерно в заявка така sql "  . &$lang .  " sql
« Последна редакция: 14 Април 2015, 22:51:09 от Avalanche »

gatakka

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 0
  • -Получени: 19
  • Публикации: 681
Отг:Функции в PHP
« Отговор #4 -: 22 Януари 2010, 09:24:03 »
Първо & означава предаване по референция, нещо ненужно в PHP5 понеже всичко е референция вече (освен няколко специфични случая)
Второ, ако опреш до използване на global значи нещо не е наред и трябва да преосмислиш дизайна на кода. Много лоша практика е global
А за проблема, ти записваш lang в $_SESSION, а този масив е глобален и достъпен навсякъде. Използвай $_SESSION[ ' lang ' ] а не $lang
За да знаеш трябва да питаш,
но за да знаеш някой трябва да ти отговори на питанията.
Добре дошли в Научи Ме!

Lubaka

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 4
Отг:Функции в PHP
« Отговор #5 -: 23 Януари 2010, 02:23:38 »
мерси за отговора ще си ползвам $_SESSION[ ' lang ' ].
До колкото дизайна на кода хич не ме бива в това и трябва го пооправя явно.

gatakka

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 0
  • -Получени: 19
  • Публикации: 681
Отг:Функции в PHP
« Отговор #6 -: 23 Януари 2010, 09:42:12 »
Не е толкова сложно. Има няколко много базови правила.
-Ако използваш global нещо не е наред
-Ако се наложи да пишеш повече от един път един и същи код на повече от едно място, вземи го и го сложи във функция. Ако кода се различава леко променяй държанието му с параметри на функцията
-Ако функцията ти взима над (да речем) 8-10 параметъра разбии я на по-малки
За да знаеш трябва да питаш,
но за да знаеш някой трябва да ти отговори на питанията.
Добре дошли в Научи Ме!

kerkenez

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 2
  • -Получени: 14
  • Публикации: 1205
Отг:Функции в PHP
« Отговор #7 -: 23 Януари 2010, 11:18:33 »
Иване, не знам защо правилото за global съществува но гледам, че хората си го ползват масово (мисля, че в joomla съм виждал а също и в wordpres, e107 и пр.).
Даже и тия, които ти се водят  " конкуренция "  Lynda гледам, че пляскат глобал в класове и пр.
Аз лично гледам да правя всякакви врътки само и само да не ползвам глобал но би ли обяснил, защо не е хубаво да се ползва.
(ако си го обяснявал и ми е изветряло, съжалявам)

Maniac

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 44
Отг:Функции в PHP
« Отговор #8 -: 23 Януари 2010, 11:39:37 »
kerkenez, Иван го е обяснил в ето този урок: Как да НЕ пишем код

Dragonyll

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 26
Отг:Функции в PHP
« Отговор #9 -: 10 Октомври 2010, 21:28:59 »
Обаче като напиша това

area();
function area()

{
   echo pi()*(2*2);  
}

на текстовия редактор Notepad++ и ми излиза грешка някаква. Защо е така а като го напиша на NetBeans ми излиза без проблем аз понеже си работя на Notepad++ защото NetBeans ми е малко неудобен а и съм си свикнал на моя текстов редактор. Моля кажете ми какво да направя. :)

OOPPSSS моя грешка извинявам се много.