PHP: объектно-ориентированное программирование для начинающих
Мысль о том, что стоит создать класс, вполне возможно, вызовет у вас смятение - желание отложить это дело до лучших времен, особенно, если вы в этом деле новичок. Класс – это прежде всего набор функций, предназначенных для совместного использования. Каждая функция создается под конкретную задачу. Класс, как правило, вещь универсальная, поэтому может быть использована на многих веб-страницах, которые вы когда-нибудь да создадите.
Преимущество в использовании классов : так как класс это набор связанных функций, то, определив единожды класс, вам не придется при необходимости повторять все те же функции в скрипте, а достаточно будет определить объект класса и вызвать необходимые методы через вновь созданный объект.
Чтобы определить класс в PHP достаточно указать после слова
class
имя класса, а сам код поместить между фигурными скобками.
class my_first_class {}
Любую переменную внутри класса обычно называют свойством класса. Каждому свойству класса должно предшествовать ключевое слово
var
(или можете использовать
public
,
private
,
protected
). Защищенные переменные (перед которыми стоит ключевое слово
protected
) обычно начинаются с символа подчеркивания, например:
protected $_name = ‘Настя’;
Если вы объявили переменную (свойство) класса, доступ к ней внутри класса можно получить с помощью оператора
$this->
, который ссылается на текущий объект. Ключевое слово
public
говорит о том, что свойство или метод могут быть доступно за пределами класса. Если перед переменной или методом внутри класса стоит ключевое слово
protected
, то доступ к переменной (методу) будет возможен только внутри класса.
Наличие public static $var
в классе или, что если метод объявлен, как static
?
Это переменная (обозначенная через static
), объявленная в контексте класса. И доступна она только через класс, например some_class::$static_var
или self::$static_var
(внутри класса).
Метод, например, validate()
(также часть класса) определен как static
. Это означает, что его можно вызвать непосредственно с помощью конструкции some_class::validate()
, без создания объекта класса.
Важно
: если вы обращаетесь к свойству посредством оператора
->
, знак доллара в имени переменной опускается. Например:
$this ->_name
При создании экземпляра класса (объекта) класс автоматом вызывает метод-конструктор класса, который инициализирует объект (создавая объект, сразу задаем значения некоторых свойств объекта). Метод конструктор обозначается как
__construct()
. При создании конструктора вы можете использовать вместо
__construct
имя класса.
Public function __construct($arg) {$this ->var_one = $arg;}
Создаем экземпляр класса с именем
$exmp
, одновременно передавая конструктору переменную
$lolo
в качестве аргумента:
$exmp = new my_first_class($lolo);
Вызываем метод объекта
$exmp
:
$exmp->method_one();
Итак для начало стоит уяснить простую вещь: объект (или экземпляр класса) предоставляет доступ к методам (или функциям) определенным в классе.
Определяем класс
<?php
class MyCar
{
}
?>
Свойства класса
<?php
class MyCar
{
public $name;
public $color;
public $price;
}
?>
Метод-конструктор класса
<?php
class MyCar
{
public $name;
public $color;
public $price;
public function __construct($name, $color, $price)
{
$this->name = $name;
$this->color = $color;
$this->price = $price;
}
}
?>
Создаем метод класса
<?php
class MyCar
{
public $name;
public $color;
public $price;
public function __construct($name, $color, $price)
{
$this->name = $name;
$this->color = $color;
$this->price = $price;
}
public function showDetails() {
print "{$this->name} | {$this->color} | {$this->price} USD";
}
}
?>
Создаем экземпляр класса
<?php
class MyCar
{
public $name;
public $color;
public $price;
public function __construct($name, $color, $price)
{
$this->name = $name;
$this->color = $color;
$this->price = $price;
}
public function showDetails() {
print "Hi, I have just produced a {$this->name} - {$this->color} | {$this->price} USD <br />";
}
}
// создаем первый экземпляр класса
$car1 = new MyCar("BMW", "Black", "40000");
// создаем второй экземпляр класса
$car2 = new MyCar("Volkswagen", "Golf", "15000");
// вызываем метод showDetails() объекта $car1
$car1->showDetails(); //Hi, I have just produced a BMW – Black | 40000 USD
// вызываем метод showDetails() объекта $car2
$car2->showDetails(); //Hi, I have just produced a Volkswagen – Golf | 15000 USD
?>
Как видите, основы ООП легки в понимании.
Источник кода
Комментарии к статье