﻿
<h1 class=p1>Время жизни переменной</h1>
<br>
<br>
<p class=text><b>Временем жизни</b> переменной называется интервал выполнения программы, в течение которого она существует. Поскольку локальные переменные имеют своей областью видимости функцию, то время жизни локальной переменной определяется временем выполнения функции, в которой она объявлена. Это означает, что в разных функциях совершенно независимо друг от друга могут использоваться переменные с одинаковыми именами. Локальная переменная при каждом вызове функции инициализируется заново, поэтому функция-счетчик, в приведенном ниже примере всегда будет возвращать значение 1:</p>
<blockquote><pre>
  <em class=gr>function</em> <b>counter</b><em class=gr>()</em>
  <em class=gr>{</em>
    <b>$counter</b><em class=gr> = </em>0<em class=gr>;</em>
    <em class=gr>return</em> <b>++$counter</b><em class=gr>;</em>
  <em class=gr>}</em>
</pre></blockquote>

<p class=text>Для того, чтобы локальная переменная сохраняла свое предыдущее значение при новых вызовах функции, ее можно объявить статической при помощи ключевого слова <b>static</b>:</p>
<blockquote><pre>
  <em class=gr>function</em> <b>counter</b><em class=gr>()</em>
  <em class=gr>{</em>
    <em class=gr>static</em> <b>$counter</b><em class=gr> = </em>0<em class=gr>;</em>
    <em class=gr>return</em> <b>++$counter</b><em class=gr>;</em>
  <em class=gr>}</em>
</pre></blockquote>

<p class=text>Временем жизни статических переменных является время выполнения сценария. Т. е., если пользователь перезагружает страницу, что приводит к новому выполнению сценария, переменная <b>$counter</b> в этом случае инициализируется заново.</p>
<br><br>