БлогNot. PHP и область видимости...

PHP и область видимости...

В стандартном мануале статья "Область видимости переменной" говорит лишь, что

Любая используемая внутри функции переменная по умолчанию ограничена локальной областью видимости функции. Например:

<?php
$a = 1; /* глобальная область видимости */ 

function test()
{ 
    echo $a; /* ссылка на переменную локальной области видимости */ 
} 

test();
?>

Этот скрипт не сгенерирует никакого вывода, поскольку выражение echo указывает на локальную версию переменной $a, а в пределах этой области видимости ей не было присвоено значение.

С другой стороны, по той же доке,

ссылка $value на последний элемент массива остается даже после того, как оператор foreach завершил работу. Рекомендуется уничтожить ее с помощью функции unset().

Стоит ли расценивать, что в показанном ниже коде поведение PHP некорректно -

<?php
 $names = array ('my','your','too');
 $k = 0;
 foreach ($names as $name) {
  $$name = ++$k;
 }
 echo $my.' '.$your.' '.$too;
?>

- решайте сами... Но факт тот, что переменные, созданные внутри цикла через конструкцию $$name (переменная переменных), остаются видимы и вне его. В любом случае, полагаться на это свойство PHP не стоит.

P.S. В PHP 5.4 появились namespace

17.09.2014, 11:32 [9746 просмотров]


теги: ошибка php

К этой статье пока нет комментариев, Ваш будет первым