Променливи и функцииОбласти на действие на променливитеГлобални променливи |
|
---|---|
Ще разгледаме областта на действие или областта на видимост на променливите.
Област на действие на променливата е тази част от програмата, в която променливата съществува. По подразбиране, променливите, които създавате в скриптовете, съществуват докато работи скрипта. Променливите на средата ($ostype, например) съществува на сървъра от момента на включването му, до момента на неговото изключване. Функциите създават нова област на видимост. Аргументите на функцията и всички променливи, зададени вътре във функцията, съществуват само в тази функция и са недостъпни отвън. С други думи казано, това са локални променливи, с локална област на действие. По подобен начин, към външна променлива можем да се обърнем само като я подадем като аргумент на функцията или с инструкцията global . Приблизителното значение на тази инструкция е: “Искам променливата в тази функция да е същата и извън функцията.” С други думи, глобалната инструкция превръща локалната променлива с област на видимост вътре във функцията, в глобална променлива с област на действие в предела на всички програми. Всяка промяна на глобалната променлива вътре във функцията, автоматически се предава на променлива със същото име, когато тя се използва извън функцията (след извикване на функцията, разбира се) с помощта на командата return. Синтаксисът на инструкцията global е следния: |
|
function име_на_функцията ($аргумент) { global $променлива; инструкция/инструкции; } |
|
Какво ни дава инструкцията за глобализация? Обикновената променлива, дори името й вътре във функцията напълно да съвпада със същото име в основната част на програмата, сама по себе си представлява съвършено различна структура (възможно и с друга стойност от променливата извън функцията). Ако реда за извикване на функцията изглежда така: име_на_ функцията ($стойност_1); а при създаване на функцията пишем име_на_функцията ($аргумент_1) В момента, в който извикаме функцията, РНР приравнява стойностите на $аргумент_1 и $стойност_1 и по-нататък, стойността на $аргумент_1 се използва в тялото на функцията. Ако промените стойността на $аргумент_1 вътре във функцията, това няма да се отрази на стойността на променливата $стойност_1. Ако имената на променливите случайно съвпадат, това няма значение- те въпреки всичко са две различни променливи. Областта на действие на едната е вътре във функцията, а на другата- извън функцията. Ето защо, за да избегнем въпросителните, при написване на функцията предвидливо използваме различно име на променливата в реда за създаване на функцията и в реда на извикването й. За удобство можете да използвате едно и също име за променливите, но помнете, че те са различни. Това, което се случва със стойността на променливата вътре във функцията, си остава във функцията. И обратно, промяната на променлива със същото име извън функцията не оказва влияние на променливата вътре във функцията. Ако сте направили променливата глобална, с помощта на инструкцията global , тя става една и съща променлива във вътрешността на функцията и извън нея. |
|
Инструкция global |
|
Мисля, че вечe е ясно, че с тази инструкция трябва да се борави внимателно, защото може да се получат големи обърквания. В РНР е добре, ако работите с глобални променливи да ги декларирате като такива вътре във функцията. Да преработим файла triangle.php: (http://dreamlandpoly.blogspot.com/p/createfunctions-3.html#triangle).
|
|
<!Doctype html> <html> <head> <title>Глобални променливи</title> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> </head> <body> <?php $a=60; $b=40; //Създаваме функция за определяне //големината на третия ъгъл ($c) //по зададени два ($a, $b) function triangle ($a, $b) { global $a, $b; $c= 180 - ($a+$b); return $c; } ?> <?php //Извиква функцията и //присвоява върнатата стойност на променливата $c $c=triangle ($a, $b); echo "Големините на ъглите в триъгълника са:" ."<br/>"."<br/>"; echo "Ъгъл \"а\" е" . " " . $a . " " . "градуса." . "<br/>"; echo "Ъгъл \"b\" е" . " " . $b . " " . "градуса." . "<br/>"; echo "Ъгъл \"c\" е" . " " . $c . " " . "градуса." . "<br/>"."<br/>"; //Определя вида на триъгълника if ($a<90 and $b<90 and $c<90){ echo "Триъгълникът е остроъгълен."; } elseif ($a>90 or $b>90 or $c>90){ echo "Триъгълникът е тъпоъгълен."; } else{ if ($a=90 or $b=90 or $c=90) echo "Триъгълникът е правоъгълен."; } ?> </body> </html> |
|
Какви са направените промени? Променихме заглавието на страницата (ред 4). Зададохме стойности на променливите извън функцията (редове 11 и 12). На ред 17, където създаваме функцията, премахнахме стойностите на аргументите. На ред 18 декларираме променливите вътре във функцията като глобални global $a, $b;. Премахнахме редовете от 20 до 23 (включително), които са налични във файла triangle.php. Добавихме редовете: echo "Големините на ъглите в триъгълника са:" ."<br/>"."<br/>"; echo "Ъгъл \"а\" е" . " " . $a . " " . "градуса." . "<br/>"; echo "Ъгъл \"b\" е" . " " . $b . " " . "градуса." . "<br/>"; echo "Ъгъл \"c\" е" . " " . $c . " " . "градуса." . "<br/>"."<br/>";След изпълнение на скрипта с различни стойности на променливите $a и $b, в браузъра ще видите: |
|
![]() ![]() ![]() |
|
Няма коментари:
Публикуване на коментар