Любой начинающий программист рано или поздно сталкивается с классами в 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 'Не пустое значение!';
В этом уроке мы узнали что такое классы, его свойства и методы, а также основные способы управления ими. В следующем уроке вы узнаете об области видимости свойств и методов внутри класса.
Добавить комментарий