Главная > Программирование > РНР: настольная книга программиста
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

15.8. Задания значений изменяющимся переменным в классах в PHP

Как было сказано ранее, в классе можно манипулировать переменными так, как если бы вы работали в основном блоке программы. Рассмотрим, как можно вносить значения изменяющимся переменным, т. е. переменным, которые ся константами. В начале класса задавать таким переменным значения не принято, поэтому, как правило, используют функцию work (см. пример 15.1.).

Приведем пример неправильного задания значений изменяющимся переменным:

class Stock {

var $todays_date = date("Y-m-d");

var $secondname = $myname;

var $owner = 'Sasha ' . 'Igor';

}

Задание переменных таким способом будет не совсем верным в РНР 4. Программа объявит ошибку.

Пример 15.1. Использование функции work

class Stock {

    var $todays_date;

    var $seсоndname;

    var $owner;

    function work() {

        $this->todays_date = date("Y-m-d");

        $this->secondname = $GLOBALS['myname'];

        /* и т. д. */

    }

}

Выполнение этого примера позволит манипулировать со значениями переменных и при необходимости использовать их в программе. Это наиболее рациональный способ задания значения при помощи функции work.

Для задания значения массиву применяется следующий синтаксис (пример 1 5.2).

Пример 15.2. Задание значения массиву

<?

class Stock {

    var $sums;

    function add_item($new, $num) {

        $this->sums [$new] = $num + 5;

    }

}

$class = new Stock;

$s = 0;

for ($i=0; $i<10; $i++) {

    $class->add_item($s++,$i);

    print $class->sums[$s-1];

}

for ($i=0; $i<10; $i++)

    print $class->sums[$i];

?>

Данная программа изменяет значения массива. Сначала задается класс Stock, после него — переменные, с которыми будет работать класс. Далее задаются функции, через которые будет происходить внесение значений для переменных класса из

нашей главной программы. После этого происходит выполнение программы, т. е. вычисления. Функция

function add_item ($new, $num) {

    $this->sums [$new] — $num + 5;

}

позволяет производить добавление значений в массив. При этом к каждому реальному значению нашего массива будет прибавляться число 5.

В пределах функции класса переменная $this означает «этот объект». Следует использовать $this->переменная, чтобы обратиться к любой переменной или функции, имеющей то или иное название в пределах вашего текущего объекта. В случае, когда происходит обращение к свойствам объекта, не нужно использовать знак $.

Строка $class = new stock; предназначена длятого, чтобы создать объект по имени $class нашего класса stock. Синтаксис его состоит из использования оператора new, который показывает, что нами создан объект $class класса stock.

Присвоение переменной $s = 0; происходит для того, чтобы в дальнейшем можно было изменять ее значения, не опасаясь, что она может принять какое-либо произвольное значение. Это очень важно при работе с численными переменными. Если бы мы не назначили переменной $s значение, равное 0, интерпретатор бы присвоил ей значение, равное 5 или, например, 10. Далее идет обычный оператор цикла, задающий логическую последовательность внесения данных в массив при ПОМОЩИ функции add_item($new, $num);.

Чтобы получить доступ к функции класса, используем ранее объявленный нами класс $class. Операция обращения к функции add_item() заложена в строке $class->add_item ($s++, $i);, при этом переменная $s++ — инкремент суммирования, т. е. от нуля до 10 будет происходить прибавление значения. Например, при — 0 значение массива будет равно 5. Обратите внимание, что в самой функции также происходит прибавление 5. Например:

$sums[1] = 5;

После этого идет еще одна очень важная строка: print $class->sums [$s-1] ;, которая позволяет выводить все значения массива в логическом порядке. В строке $class->add_item($s++ , $i); после того как было произведено внесение значений переменных $s и $i, сразу произошло прибавление единицы к значению переменной $s. Чтобы это ликвидировать, производим вычитание и получаем необходимое нам значение. В результате выполнения программы на экран будет выведено:

5 6 7 8 9 10 11 12 13 14

Происходит увеличение каждого следующего значения на единицу, как и следовало ожидать.

Последние строки кода:

for ($i=0; $i<10; $i++)

    print $class->sums[$i];

показывают, что значения самого массива после его задания сохраняются и теперь можно пользоваться ими в течение всей программы.

После того как вы внесли данные и произвели задание вы можете же создать любую другую функцию для произведения каких-либо операций, например:

function remove_item ($new, $num) {

    if ($this->sums[$new] > $num) {

        $this->sums[$new] -= $num;

        return true;

    }

    else {

        return false;

    }

}

<< Предыдущий параграф Следующий параграф >>
Оглавление