Требуется создать класс Animal, который будет содержать данные о животных. В классе будут описаны две функции(методы класса): set_name и get_name. Также в классе описывается одна переменная(свойство класса).
class Animal
{
var $name;
function set_name ($text)
{
$this->name = $text;
}
function get_name ()
{
return $this->name;
}
}
Для создания объектов используется оператор new. Созданный объект может быть сохранен в переменной точно так же, как и обычное значение или массив. После создания объекта доступ к его свойствам и методам осуществляется при помощи оператора ->. Создание и использование объекта выглядит следующим образом:
$lion = new Animal;
$lion->set_name ("Бонифаций");
echo "Имя созданного льва: ", $lion->get_name(), ". ";
При выполнении фрагментов кода будет отображена следующая строка:
Имя созданного льва: Бонифаций
В РНР переменная не требует явного объявления и создается при первом упоминании о ней. Но для свойства класса этот принцип недействителен, и для его описания требуется использовать оператор var. После описания свойство класса доступно для всех его методов, в частности, для метода set name, который предназначен для запоминания имени животного.
class Animal
{
var $name;
function set_name ($text)
{
Для получения доступа к свойству класса изнутри его метода используется встроенная переменная $this, которая указывает на текущий объект данного класса. Переменная содержит указатель и используется совместно с оператором - >, таким образом, для ссылки на свойство name необходимо использовать следующий синтаксис: $this->name (следует обратить внимание, что перед именем свойства отсутствует знак $, синтаксис $this->$name является некорректным).
class Animal
{
var $name;
function set_name ($text)
{
$this->name = $text;
}
Другой метод класса, get_name, возвращает текущее имя животного:
class Animal
{
var $name;
function set_name ($text)
{
$this->name = $text;
}
function get_name ()
{
return $this->name;
}
Имеется возможность инициализации свойств класса при помощи константы, при этом использование любого вида выражений недопустимо:
class Animal
{
var $name = "Leo"; // Корректный оператор
var $name = "L"."e"."o"; // Ошибочный оператор
}
Описание класса не может быть разорвано HTML-кодом; весь класс целиком должен быть описан в рамках единой секции <?php...?>. Кроме того, поскольку в РНР имеются ряд встроенных методов, названия которых начинаются с символов (два подчеркивания), не следует использовать их в начале названий собственных методов.