В РНР для вызова метода некоторого объекта используется оператор "стрелка" .
<?php ## Вызов метода объекта.
// Подключение каталога библиотек в include_path.
require_once "lib/config.php";
// Загрузка класса.
require_once "Math/Complex.php";
// Создаем новый объект класса Math_Complex.
$obj = new Math_Complex;
// Присваиваем начальное значение свойствам.
$obj->re = 16.7;
$obj->im = 101;
// Вызов метода add()c параметрами (18.09, 303) объекта $obj.
$obj->add(18.09/ 303);
// Выводим результат:
echo "({$obj->re}, {$obj->im})";
?>
Переопределить арифметические операторы (например, +, - и т. д.) для объектов в РНР нельзя .
В качестве параметра функции можно указывать объект другого (или того же самого) класса.
<?php ## Пример класса с методом,
class Math_Complex {
public $re, $im;
// Добавляет к текущему комплексному числу другое,
function add(Math_Complex $y) {
$this->re += $y->re;
$this->im += $y->im;
}
// Преобразует число в строку (например, для вывода).
function __toString() {
return "({$this->re}, {$this->im})";
}
}
?>
Мы явно указали перед параметром $у тип Math_Complex. Это говорит РНР, что мы можем передавать в данную функцию только объекты этого класса, но не другого. Указывать типы аргументов можно с пятой версии РНР. Например, при попытке указать вместо $у целое число мы получим ошибку во время исполнения программы:
$obj->add(1);
Fatal error: Argument 1 must be an object of class Math_Complex
В отличие от таких языков, как C++ и Java, в РНР не поддерживается создание в одном классе нескольких методов с одинаковым именем, которые бы различались только типами и количеством аргументов.
В РНР существует ряд имен методов, начинающихся с двойных подчерков, которые имеют специальное значение. Функция __tostring() вызывается РНР автоматически всякий раз, когда мы затребуем неявное преобразование ссылки на объект в строку.
Для определения конструктора класса используют метод с названием __construct(). Конструктор вызывается всякий раз, когда вы используете оператор new для объекта. В РНР у класса может быть только один конструктор.