Reg.ru: домены и хостинг

Крупнейший регистратор и хостинг-провайдер в России.

Более 2 миллионов доменных имен на обслуживании.

Продвижение, почта для домена, решения для бизнеса.

Более 700 тыс. клиентов по всему миру уже сделали свой выбор.

Перейти на сайт->

Бесплатный Курс "Практика HTML5 и CSS3"

Освойте бесплатно пошаговый видеокурс

по основам адаптивной верстки

на HTML5 и CSS3 с полного нуля.

Начать->

Фреймворк Bootstrap: быстрая адаптивная вёрстка

Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.

Научитесь верстать просто, быстро и качественно, используя мощный и практичный инструмент.

Верстайте на заказ и получайте деньги.

Получить в подарок->

Бесплатный курс "Сайт на WordPress"

Хотите освоить CMS WordPress?

Получите уроки по дизайну и верстке сайта на WordPress.

Научитесь работать с темами и нарезать макет.

Бесплатный видеокурс по рисованию дизайна сайта, его верстке и установке на CMS WordPress!

Получить в подарок->

*Наведите курсор мыши для приостановки прокрутки.


Объектно-ориентированный подход в PHP для начинающих. Часть 1

Многим PHP-программистам объектно-ориентированное программирование кажется пугающим, изобилующим запутанным синтаксисом и другими сложностями.

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

Именно это позволяет писать более компактный и эффективный код.

Понимание Объектно-Ориентированного Программирования (ООП)

ООП - это стиль написания кода, который позволяет разработчикам группировать сходные задачи в классы. Это помогает коду соответствовать так называемому принципу DRY (Don't Repeat Yourself - Не повторяйте сами себя) и быть легким с точки зрения модификации и доработки.

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

Одно из главных преимуществ применения принципа DRY состоит в том, что при изменении какой-либо информации в Вашей системе, как правило, приходится править код только в каком-то одном месте.

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

ООП страшит многих разработчиков из-за того, что вводит новый синтаксис и, на первый взгляд, кажется гораздо более сложным делом, нежели простое процедурное кодирование. Однако, после более плотного знакомства с ним, многие соглашаются, что ООП не так сложно, как кажется, и является более продуктивным подходом к написанию кода.

Хостинг

Понимание Объектов и Классов

Прежде чем переходить непосредственно к ООП, необходимо иметь базовое понимание того, что такое объект, и что такое класс. Сейчас мы рассмотрим, как создаются классы, их возможности и некоторые из способов их использования.

Понимание отличия объектов от классов

Действительно, существует определенная путаница. Многие опытные разработчики используют эти два слова как взаимозаменяемые понятия, что зачастую очень путает новичков и портит им немало нервных клеток.

Класс, к примеру, подобен плану дома. Он определяет конфигурацию и устройство дома на бумаге. На плане могут быть представлены все детали внутреннего устройства дома, хотя в действительности самого этого дома еще не существует.

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

Классы формируют структуру данных и действий и используют эту информацию для создания объектов.

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

Структура Класса

Синтаксис создания класса вполне самоочевиден: объявляем класс, используя ключевое слово, а за ним следует само название класса с фигурными скобками:

<?php

class MyClass
{
    // Здесь идут свойства и методы класса
}

?>

После создания класса можно создать новый объект, используя ключевое слово new, и сохранить его в переменную:

$obj = new MyClass;

Для того, чтобы увидеть содержимое объекта, используйте функцию var_dump():

var_dump($obj);

Создайте новый php-файл с произвольным именем и посмотрите, как это работает, воспользовавшись следующим блоком кода:

<?php

class MyClass
{
	// Здесь идут свойства и методы класса
}

$obj = new MyClass;

var_dump($obj);

?>

Обратитесь к созданному Вами файлу, и на экране должна появиться следующая строка:

object(MyClass)#1 (0) { }

Отлично. Ваш первый простейший скрипт а-ля "Hello, World" готов. Но пользы от него совершенно никакой, поэтому двигаемся дальше.

Объявление Свойств Класса

Для добавления в класс информации используются свойства (по сути это переменные, относящиеся к данному конкретному классу). Они работают точно так же, как и обычные переменные, за исключением того, что они имеют привязку к объекту и, следовательно, доступ к ним можно получить только через объект.

Для того, чтобы добавить свойство в класс MyClass, внесите следующий код в скрипт:

<?php

class MyClass
{
    public $prop1 = "Я - свойство класса!";
}

$obj = new MyClass;

var_dump($obj);

?>

Ключевое слово public определяет так называемую "область видимости" свойства. Об этом мы поговорим позже в процессе изучение основ объектно-ориентированного программирования. Далее свойству дается имя, при этом используется стандартный синтаксис PHP и ему (свойству) присваивается значение (надо заметить, что свойствам в классе не обязательно иметь начальное значение).

Для того, чтобы получить значение свойства и вывести его на экран, нужно указать объект, к которому оно относится, и само свойство:

echo $obj->prop1;

Поскольку одновременно могут существовать несколько экземпляров класса (как, например, несколько домов, построенных по одному плану), то нужно явно указывать, с каким объектом мы работаем, иначе скрипт не сможет определить, свойство какого объекта нужно получить.

Хостинг

Знак "->" является специальной конструкцией, которая позволяет получить доступ к свойствам или методам данного объекта.

Измените скрипт, чтобы получить значение свойства, таким образом:

<?php

class MyClass
{
    public $prop1 = "Я - свойство класса!";
}

$obj = new MyClass;

echo $obj->prop1; // Выводим значение свойства

?>

Обновите страницу и Вы получите следующий результат:

Я - свойство класса!

Объявление Методов Класса

Методы - это функции, относящиеся к конкретному классу. Отдельные действия, которые способен будет производить объект, внутри класса называются методами.

К примеру, для создания методов, которые будут задавать и получать значение свойства $prop1, нужно изменить код таким образом:

<?php

class MyClass
{
    public $prop1 = "Я - свойство класса!";

    public function setProperty($newval) // функция для задания значения свойства
    {
        $this->prop1 = $newval;
    }

    public function getProperty() // функция для получения значения свойства
    {
        return $this->prop1 . "<br />";
    }
}

$obj = new MyClass;

echo $obj->prop1;

?>

Заметьте: ООП позволяет объектам ссылаться на самих себя, используя конструкцию $this. Когда Вы работаете с методом, используйте $this таким же образом, как когда Вы используете имя объекта за пределами класса.

Для использования методов, просто вызывайте их как обычные функции, указывая сперва, к какому объекту они относятся.

Получим значение свойства с помощью метода getProperty(), затем изменим его с помощью метода setProperty() и снова получим значение уже измененного свойства:

<?php

class MyClass
{
    public $prop1 = "Я - свойство класса!";

    public function setProperty($newval)
    {
        $this->prop1 = $newval;
    }

    public function getProperty()
    {
        return $this->prop1 . "<br />";
    }
}

$obj = new MyClass;

echo $obj->getProperty(); // Получаем значение свойства

$obj->setProperty("Я - измененное свойство класса!"); // Устанавливаем новое значение свойства

echo $obj->getProperty(); // Получаем снова значение уже измененного свойста

?>

Обновите страницу в браузере и Вы увидите две строки:

Я - свойство класса!
Я - измененное свойство класса!

"Мощь ООП становится очевидной при использовании нескольких экземпляров одного и того же класса."


<?php

class MyClass
{
    public $prop1 = "Я - свойство класса!";

    public function setProperty($newval)
    {
        $this->prop1 = $newval;
    }

    public function getProperty()
    {
        return $this->prop1 . "<br />";
    }
}

// Создаем два объекта
$obj = new MyClass;
$obj2 = new MyClass;

// Получаем значение свойства $prop1 из обоих объектов
echo $obj->getProperty();
echo $obj2->getProperty();

// Устанавливаем новые значения свойства для обоих объектов
$obj->setProperty("Я - новое свойство класса!");
$obj2->setProperty("Я принадлежу второму экземпляру класса!");

// Выводим значения свойства $prop1 для обоих объектов
echo $obj->getProperty();
echo $obj2->getProperty();

?>

Обновите страницу и Вы увидите следующий результат:

Я - свойство класса!
Я - свойство класса!
Я - новое свойство класса!
Я принадлежу второму экземпляру класса!

Как Вы можете видеть, ООП сохраняет объекты как отдельные элементы, что позволяет легко разделять различные части кода на мелкие "связки".

По материалам net.tutsplus.com
Перевод - Дмитрий Науменко.

P.S. Хотите двигаться дальше в освоении PHP и ООП? Обратите внимание на премиум-уроки по различным аспектам сайтостроения, включая программирование на PHP, а также на бесплатный курс по созданию своей CMS-системы на PHP с нуля с использованием ООП:

Понравился материал и хотите отблагодарить?
Просто поделитесь с друзьями и коллегами!


Смотрите также:

PHP: Получение информации об объекте или классе, методах, свойствах и наследовании

PHP: Получение информации об объекте или классе, методах, свойствах и наследовании

CodeIgniter: жив или мертв?

CodeIgniter: жив или мертв?

Функции обратного вызова, анонимные функции и механизм замыканий

Функции обратного вызова, анонимные функции и механизм замыканий

Применение функции к каждому элементу массива

Применение функции к каждому элементу массива

Слияние массивов. Преобразование массива в строку

Слияние массивов. Преобразование массива в строку

Деструктор и копирование объектов с помощью метода __clone()

Деструктор и копирование объектов с помощью метода __clone()

Эволюция веб-разработчика или Почему фреймворк - это хорошо?

Эволюция веб-разработчика или Почему фреймворк - это хорошо?

Магические методы в PHP или методы-перехватчики (сеттеры, геттеры и др.)

Магические методы в PHP или методы-перехватчики (сеттеры, геттеры и др.)

PHP: Удаление элементов массива

PHP: Удаление элементов массива

Ключевое слово final (завершенные классы и методы в PHP)

Ключевое слово final (завершенные классы и методы в PHP)

50 классных сервисов, программ и сайтов для веб-разработчиков

50 классных сервисов, программ и сайтов для веб-разработчиков

Наверх