Уводзіны ў ААП у PHP

Зараз мы займемся вывучэннем ААП у PHP. Давайце разгледзім прыклад з жыцця, а потым перанясем яго ў PHP.

У якасці прыкладу возьмем аўтамабіль. У яго ёсць колы, колер, выгляд кузава, аб'ём рухавіка і так далей. Акрамя таго, кіроўца можа аддаваць яму каманды: ехаць, спыніцца, павярнуць направа, налева і г.д.

Можна казаць пра тое, што існуе пэўны клас аўтамабіляў, які валодае агульнымі ўласцівасцямі (у ўсіх ёсць колы і ўсім ім можна аддаваць каманды).

Канкрэтны аўтамабіль які стаіць на вуліцы - гэта прадстаўнік гэтага класа, або, іншымі словамі, аб'ект гэтага класа. У ўсіх аб'ектаў гэтага класа ёсць уласцівасці: колькасць колаў, колер, выгляд кузава і метады: ехаць, спыніцца, павярнуць направа, налева.

Іншымі словамі сам клас - гэта чарцёж, па якім на заводзе робяцца аўтамабілі. Аб'ект жа - гэта сама машына, зробленая па гэтых чарцяжах.

У PHP клас ствараецца з дапамогай ключавога слова class, за якім ідзе назва гэтага класа. Давайце зробім клас Car:

php<?php
  class Car
  {
    // тут код, гэта значыць PHP-чарцёж аўтамабіля
  }
?>

Пакажам цяпер у нашым чарцяжы, што любы аўтамабіль, створаны па гэтаму чарцяжу, будзе мець уласцівасць для колеру і уласцівасць для колькасці паліва.

Для гэтага ўнутры класа напішам уласцівасць $color і ўласцівасць $fuel:

php<?php
  class Car
  {
    // Зададзім уласцівасці (па сутці зменныя класа):
    public $color; // колер аўтамабіля
    public $fuel; // колькасць паліва
  }
?>

Давайце цяпер зробім метады нашага класа. У PHP метады, падобна да звычайных функцый, аб'яўляюцца з дапамогай ключавога слова function, перад якім пішацца ключавое слова public.

Як ужо згадвалася вышэй, наш аўтамабіль можа ехаць, можа паварочваць, можа спыняцца. Зробім адпаведныя метады ў нашым класе:

php<?php
  class Car
  {
    public $color; // колер аўтамабіля
    public $fuel;  // колькасць паліва
    
    // Каманда ехаць:
    public function go()
    {
      // нейкі PHP код
    }
    
    // Каманда паварочваць:
    public function turn()
    {
      // нейкі PHP код
    }
    
    // Каманда спыніцца:
    public function stop()
    {
      // нейкі PHP код
    }
  }
?>

Мы з вамі зрабілі чарцёж нашага аўтамабіля. Цяпер трэба адправіцца на завод і зрабіць аб'ект гэтага класа (гэта значыць канкрэтны аўтамабіль).

У PHP гэта робіцца з дапамогай ключавога слова new, пасля якога пішацца імя класа:

php<?php
  new Car;
?>

Аднак, калі проста стварыць аб'ект класа - гэта ні да чаго не прывядзе (гэта ўсё роўна, што, напрыклад, аб'явіць масіў і нікуды яго не запісаць). Нам патрэбная зменная для захоўвання гэтага аб'екта.

Хай гэтая зменная будзе называцца $myCar - запішам у яе створаны намі аб'ект:

php<?php
  $myCar = new Car;
?>

Пасля стварэння аўтамабіля можна звяртацца да яго ўласцівасцей. Зварот да іх адбываецца праз стрэлачку ->. Давайце ўсталюем уласцівасці нашага аб'екта:

php<?php
  $myCar = new Car; // камандуем заводу зрабіць аўтамабіль
  
  // Усталёўваем уласцівасці аб'екта:
  $myCar->color = 'red'; // фарбуем у чырвоны колер
  $myCar->fuel = 50; // заліваем паліва
?>

Усё, наш аўтамабіль створаны, пафарбаваны і запраўлены. Цяпер мы можам аддаваць яму каманды праз метады гэтага аўтамабіля.

Зварот да метадаў таксама адбываецца праз стрэлачку, але, у адрозненне ад уласцівасці, пасля імя метаду след пісаць круглыя дужкі. Давайце пакамандваем нашым аб'ектам:

php<?php
  $myCar->go();
  $myCar->turn();
  $myCar->stop();
?>