![]() |
|
||||||||||||||
|
|
|
<?php
// объявляем класс с именем Rectangle
class Rectangle
{
// свойство "ширина"
private $width;
// свойство "высота"
private $height;
// конструктор класса
public function __construct($x, $y)
{
$this->width = $x;
$this->height = $y;
}
// метод "посчитать площадь"
public function Square()
{
return $this->width * $this->height;
}
}
// создаём массив прямоугольников
$rects = array();
// заполняем массив экземплярами
$rects['1'] = new Rectangle(100, 100);
$rects['2'] = new Rectangle(20, 200);
$rects['3'] = new Rectangle(300, 50);
// выводим площадь каждого экземпляра
foreach($rects as $key => $rect)
{
echo 'Площадь ' . $key .
' прямоугольника: ' . $rect->Square() .
">br />\n";
}
?>
Объявление класса начинается с ключевого слова "class", после которого записывается имя класса. Тело класса (все свойства и методы) ограничиваются фигурными скобками "{}". Объявление любого свойства или метода начинается с ключевых слов public или private, определяющих область видимости свойства или метода. Элементы, помеченные "public" (публичные) видны извне класса, а помеченные "private" (частные) можно использовать только внутри этого же класса. Например:
<?php
// создаём экземпляр класса
$rect = new Rectangle(100, 100);
// вызов публичного метода
echo $rect->Square();
// попытка ображения к закрытому
// свойству вызовет ошибку
echo $rect->width;
?>
Свойства класса объявляются как обычные переменные (см. переменные $width и $height), а методы класса - как обычные функции. Основное отличие в том, что внутри метода непосредственно доступны все свойства и методы данного класса, т.е. нет необходимости пользоваться конструкцией global. Для указания того, что вы хотите обратиться к методу или свойству текущего экземпляра надо воспользоваться ссылкой $this, которая автоматически доступна внутри экземпляра любого класса (см. код метода Square() ). Экземпляр класса создаётся при помощи ключевого слова "new" и имени класса. Конструкцию
<?php
$rect = new Rectangle(100, 100);
?>
следует читать как "Создать экземпляр класса Rectangle с высотой 100, шириной 100, ссылку на экземпляр поместить в переменную $rect". В момент создания класса автоматически выполняется служебный метод, т.н. "конструктор". Он имеет фиксированное имя "__construct()", а тип и количество параметров определяет разработчик. Основное назначение конструктора - инициализация внутренних переменных и свойств класса. Единственное отличие конструктора от обычного метода - конструктор не может возвращать значение. Пример:
<?php
// объявили класс с конструктором
class DemoClass
{
private $a;
private $b;
private $c;
private $d;
public function __construct($a, $b, $c)
{
$this->a = $a;
$this->b = $b;
$this->c = $c;
$this->d = 'my secret string';
}
public function getSecret()
{
return $this->d;
}
}
// создаём экземпляр класса
$demo = new DemoClass('a', 'b', 'c');
// выводим секретную строку
echo $demo->getSecret();
// строка 'my secret string' выводится,
// хотя мы её явно не инициализировали
?>
Экземпляры классов удаляются так же, как все переменные PHP - посредством вызова unset(). При удалении экземпляра автоматически вызывается его деструктор. Это служебный метод без параметров с именем "__destruct()", в котором программист может явно закрыть и освободить все ресурсы, используемые экземпляром. По умолчанию, все ресурсы гарантированно освобождаются по окончании выполнения скрипта. ООП - интересная область PHP, но изучать её в отрыве от практики очень сложно. Поэтому сейчас мы не будем вдаваться в тонкости и подробности, а рассмотрим их позже при решении практических задач. |
|
|
Спасибо, что заглянули на сайт. Надеюсь, Вам понравилось. Заходите еще. Здесь всегда рады вам :) |
|
© 2005-2012 |
E-mail: |