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

15.16. Демонстрационная программа

Чтобы более подробно ознакомиться на практике с программированием классов, приведем пример работы с классами, а также полное описание последовательности

<?

class a {

    function a($i) {

        $this->value = $i;

        $this->b = new b($this);

    }

    function createRef() {

        $this->c = new b($this);

    }

    function echoValue() {

        echo "
","class ",get_class($this) , ': ', $this->value;

    }

}

class b {

    function b(&$a) {

        $this->a = &$a;

    }

    function echoValue() {

        echo "<br>","class", get_class($this), ' : ' , $this->a->value;

    }

}

$a =& new a(10);

$a->createRef();

$a->echoValue();

$a->b->echoValue();

$a->c->echoValue();

$a->value = 11;

$a->echoValue();

$a->b->echoValue();

$a->c->echoValue();

$a->value = 14;

$a->echoValue();

$a->b->echoValue();

$a->c->echoValue();

?>

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

1: class a {

2: function a($i) {

3: $this->value = $i;

4: $this->b = new b($this);

5: }

6: function createRef() {

7: $this->c = new b($this);

8: }

9: function echoValue () {

10: echo "<br>","class ",get_class($this) , ': ', $this->value;

11: }

12:}

Первая строка необходима для создания самого класса, где происходит имени класса и открытие основного контейнера (блока) класса. Вторая строка пользуется для задания функции в этом классе, также там задается то, что в эту функцию через переменную будет вводиться некоторое Третья строка

характеризует способ задания переменной value значения, переданного в цию непосредственно при вызове последней, т. е. значение переменной $i. Для чего это нужно, вы увидите при выведении результата значений. Четвертая строка создает объект, который ссылается на класс по имени b. При этом тут идет процесс обработки самого адреса, не касаясь непосредственно значений. Шестая строка характеризует способ задания второй функции в этом классе, в которой будет создаваться также объект с, переводящий управление в класс b. В девятой и десятой строках задается функция, которая позволяет выводить значения наших объектов и принадлежащие им переменные. Обратите внимание, в этой функции используется функция get_class(), не изученная нами ранее. Она позволяет возвращать имя класса используемого объекта, и тем самым вы сможете пронаблюдать, из какого класса были вызваны те или иные переменные.

Теперь рассмотрим класс по имени b:

1:class b {

2: function b(&$а) {

3: $this->a = &$a;

4: }

5: function echoValue().{

б: echo "<br>","class ",get_class($this),': ', $this->a->value;

7: }

8:}

Данный класс имеет имя о чем, собственно, и говорит первая строка. Вторая и третья строю! задают функцию, которая необходимадля того, чтобы манипулировать ссылками. Переменная, которая приходит вданную функцию, сразу ссылается на ее адрес, после чего и происходят дальнейшие операции выполнения данной программы. Пятая и шестая строки задают функцию, которая позволяет выводить значения переменных, с которыми мы работаем. Обратите внимание, что эта функция и функция, приведенная в классе а, имеют свои специфические отличия. Для чего они необходимы, вы увидите на примере выполнения данной программы.

Далее идет основной код программы, описание которого вы без какого-либо труда разберете сами, так как основные концепции работы с классами вам были изложены ранее.

Результатом данной программы будет следующий столбец данных:

class a: 10

class b: 10

class b: 10

class a: 11

class b: 11

class b: 11

class a: 14

class b: 14

class b: 14

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