САМОУЧИТЕЛЬ PHP 4

Инициализация объекта. Конструкторы


До сих пор мы не особенно задумывались, каким образом были созданы объекты $Obj1 и $Obj2 и к какой таблице они прикреплены. Однако вполне очевидно, что эти объекты не должны существовать сами по себе — это просто не имеет смысла. Поэтому нам, наравне с уже описанными методами, придется написать еще один — а именно, метод, который бы:

r    "привязывал"

только что созданный объект-таблицу к таблице в MySQL;

r    сбрасывал индикатор ошибок;

r    заполнял свойство Fields;

r    делал другую работу по инициализации объекта.

Назовем это метод, например, Init():

class MysqlTable {

 . . .

 // Привязывает объект-таблицу к таблице с именем $TblName

 function Init($TblName)

 { $this->TableName=$TblName;

 $this->Error=0;



 получаем и заполняем $this->Fields

 }

}

. . .

$Obj=new MysqlTable; $Obj->Init("test");

А вдруг между вызовами new и Init() случайно произойдет обращение к таблице? Или кто-то по ошибке забудет вызвать Init()

для созданного объекта (что обязательно случится, дайте только время)? Это приведет к непредсказуемым последствиям. Поэтому, как и положено в ООП, мы можем завести метод вместо Init(), который будет вызываться автоматически сразу же после инструкции new

и проводить работы по инициализации объекта. Он называется конструктором, или инициализатором. Чтобы PHP мог понять, что конструктор следует вызывать автоматически, ему (конструктору) нужно дать то же имя, что и имя класса. В нашем примере это будет выглядеть так:

class MysqlTable {

 function MysqlTable($TblName)

 { команды, ранее описанные в Init();

 }

}

$Obj=new MysqlTable("test"); // создаем и сразу же инициализируем объект

Обратите внимание на синтаксис передачи параметров конструктору. Если бы мы случайно пропустили параметр test, PHP выдал бы сообщение об ошибке. Таким образом, теперь в программе потенциально не могут быть созданы объекты-таблицы, ни к чему не привязанные.



Содержание раздела