Классы и объекты в PHP: свойства и методы. Часть 1

Классы и объекты в PHP: свойства и методы. Часть 1

Любой начинающий программист рано или поздно сталкивается с классами в PHP. И чем раньше это произойдет, тем более мощные инструменты он сможет использовать в своем коде.

Не совершайте моих ошибок. Раньше я думал, что все классы можно заменить функциями. Но, как только потратил несколько дней на изучение нового раздела, то теперь использую только классы и объекты - настолько они функциональны, упрощают код и делают его красивее. Это было предисловие, а теперь давайте подробнее разберемся в терминах.

Класс в PHP - это совокупность свойств и методов, которые позволяют быстро оперировать данными. Своего рода это контейнер, внутри которого мы можем расположить нужный нам функционал, например функции или переменные.

Объект в PHP - экземпляр класса, т.е. его уникальная копия, которая может напрямую использовать все его методы и свойства. У одного класса может быть множество объектов. Давайте разберем все на примерах.

Создадим такой класс:

class TestClass {
public $mes = "Hi! "; //свойство класса
function sayHello() { //метод класса
echo "привет!"; }
}

Здесь:

  • TestClass - название класса, внутри которого мы поместили данные.
  • public $mes - свойство класс. public означает уровень доступности этой переменной. Подробнее об этом я расскажу в других уроках
  • function sayHello()  - из PHP мы знаем, что это функция. Но если она находится внутри класса, то здесь она называется методом.

Итак, на этом примере мы выяснили, что классы могут содержать множество методов и свойств - это основа содержимого любого класса. Давайте теперь подключим к классу объект.

Создадим экземпляр класса:

$dance = new TestClass();

Теперь переменная $dance является объектом (правильнее говорить экземпляром) класса TestClass и ей доступны все его методы и свойства. К слову так, мы можем обращаться к данным класса:

echo $dance->mes; // выведет Hi!
$dance->sayHello(); // выведет привет!

Чтобы переназначить свойство класса можно писать так: $dance->mes = "Новое значение";

$this в классах

Давайте немного усложним пример:

class MyClass1 {
public $message = "Hi! ";
public $opisanie;
function sayHello1() { return $this->message.' '.$this->opisanie; }
function sayHello2($name) { return $name; }
}

В классе MyClass1 у нас теперь 2 свойства $message и $opisanie. Причем $message имеет значение Hi! - оно будет использоваться по умолчанию. Также у нас два метода sayHello1() и sayHello2().

Если с sayHello2($name) все понятно - эта функция просто возвращает введенное пользователем имя.

То в sayHello1() будут выводиться значения свойств  $message и $opisanie. Получаем доступ к ним за счет записей типа $this->message, где $this - название класса (т.е. MyClass1). Обратите внимание, что message пишется без $.

Так можно использовать переменные внутри класса. Заметьте, что нам не нужно было передавать явно значения переменных $message и $opisanie в функции sayHello1().

Теперь подключим объект к этому классу:

//Задали объект
$credo = new MyClass1();
$credo->message = 'Мистер '; // изменили значение $message, которое уйдет в класс
$credo->opisanie = 'не забудьте галстук!'; // изменили значение $opisanie, которое уйдет в класс
echo $credo->sayHello1(); // выведет Мистер не забудьте галстук!
echo $credo->sayHello2(' Серега'); // выведет Серега.

Думаю по комментариям исчерпывающе понятно, как работает объект $credo и как мы обращаемся к данным его класса. Еще один момент. Если в функции echo $credo->sayHello2(); не передавать значение, то явной ошибки не будет - выдаст пустоту и предупреждение об отсутствии переменной. Так лучше не делать.

Проверить которую можно так: $test = $credo->sayHello2('Серега'); if(!empty($test)) echo 'Не пустое значение!';

В этом уроке мы узнали что такое классы, его свойства и методы, а также основные способы управления ими. В следующем уроке вы узнаете об области видимости свойств и методов внутри класса.

 

 

| | Классы и объекты в PHP: свойства и методы. Часть 1 | Любой начинающий программист рано или поздно сталкивается с классами в PHP. И чем раньше это произойдет, тем более мощные инструменты он сможет исполь | http://blogprogram.ru/wp-content/uploads/2017/05/123123-131x131.png

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>