Php введение в ооп

Функция connect()

Эта функция будет довольно простой, но прежде чем писать функцию, нам потребуется определить несколько переменных. Переменные должны быть доступны только в пределах класса, поэтому перед каждой переменной стоит ключевое слово

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

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

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

PHP

Как видите выше, мы используем базовые функции MySQL и делаем небольшую проверку на ошибки, чтобы все шло по плану. Если пользователь подключился к БД, мы возвращаем

, в ином случае возвращаем false. В качестве дополнительного бонуса устанавливаем переменную (

) в true, если соединение установлено.

Как создать объект класса в PHP?

Чтобы создать новый объект в PHP, используйте новинка ключевое слово и напишите имя объекта после ключевого слова. Посмотрите на следующий пример, в котором мы создаем два объекта класса Pets.

  • В приведенном выше примере мы включаем два метода для установки и получения имени питомца.
  • Мы используем новинка ключевое слово для создания двух объектов $ cat и $ dog.
  • Вызовите метод set_name, используя оба объекта.
  • Теперь оба объекта содержат собственное свойство псевдонима.

Теперь, в приведенном выше примере, мы добавим еще две функции, которые будут устанавливать и получать свойство цвета домашнего животного.

  • В приведенном выше примере мы включаем два дополнительных метода для установки и получения цвета питомца.
  • Мы используем новинка ключевое слово для создания двух необъектов $ cat и $ dog.
  • Вызовите set_name и установите методы цвета для обоих объектов.
  • Теперь оба объекта имеют собственное свойство псевдонима и цвета.
  • Мы вызываем метод get, используя оба объекта. Он выведет имя и цвет обоих питомцев.

Что такое объектно-ориентированное программирование?

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

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

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

Доступ к свойствам

Чтобы получить доступ к объекту нужно использовать оператор «->», следующим образом:

<?php

 $Объект -> ИмяСвойства

?>

Попробуйте так сделать. Давайте создадим скрипт, который объявляет класс User и его свойства, создает новые объекты User, а затем устанавливает и считывает свойство username:

<?php

class User
{
  public $username = "";
}
 
$User = new User();
$User->username = "Петя";
echo $User->username; // Выводит "Петя"
 
?>

Если вы запустите указанный выше код, то в результате будет выведена строка «Петя», которая является значением свойства $User->username. Как можно заметить, свойство объекта используется обычная переменная. Можно прочитать его значение и присвоить ему новое.

2.2. Что такое класс?

Класс можно рассматривать как план, с помощью которого можно создать столько объектов, сколько захотите.

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

В следующем примере мы создали два объекта и предоставили им отдельные свойства с помощью конструктора:

(Продолжаем использовать Java)

public class Site {
   //поля (или переменные)
   String webName;
   int webAge;

   // конструктор
  Site(String name, int age){
      this.webName = name;
      this.webAge = age;
   }
   public static void main(String args[]){
      //создаем объекты
      Site obj1 = new Site("highload", 5);
      Site obj2 = new Site("yandex", 18);

     //Получаем данные объекта и выводим их в консоль
     System.out.println(obj1.webName+" "+obj1.webAge);
     System.out.println(obj2.webName+" "+obj2.webAge);
   }
}

Полиморфизм

Последний момент, который важен для использования – полиморфизм. В Google так называют концепцию, которая имеет отношение к возможности разными путями обрабатывать элементы. Все зависит от типа заданной информации.

Здесь происходит следующее:

  1. Корректировка formatMessage посредством переопределения в классе BoldMessage.
  2. Сообщение будет форматироваться по-разному в зависимости от того, какой тип элемента перед разработчиком.
  3. В ООП на PHP нет поддержки перегрузки.

Для того, чтобы лучше разобраться в рассмотренных примерах, рекомендуется проработать вручную все кодификации. А еще можно отыскать немало полезных туториалов на соответствующую тематику в Google.

По этой ссылке находятся видео-уроки, которые помогут лучше разобраться в объектно-ориентированном программировании и PHP. Это – отличный настольный помощник как для новичков, так и для опытных разработчиков.

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

Простой пример реализации ООП-концепции

Допустим, клиент заказал у вас сделать новый Тамагочи с белым медведем в качестве виртуального питомца. Вы принимаетесь за работу и создаете класс на JavaScript/TypeScript.

class PolarBear {
 private _weight: number = 990;
 constructor(weight: number = 0) {
   this._weight = weight
 }
 makeNoise() {
   console.log("ревет");
 }
 eat() {
   console.log("ест все что захочет");
 }
 sleep() {
   console.log("спит");
 }
 roam() {
   console.log("бесцельно бродит);
 }
}

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

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

Чтобы приручить свой виртуальный зверинец, вам поможет ООП, а именно простая структуризация кода: черные медведи, гризли и медведи-ленивцы — объединим в класс Медведи. В то же время медведи, грызуны и обезьяны — будут помечены классом Животные. Вот так мы постепенно и построим наше генеалогическое древо.

Это только часть кода:

class Animal {
 private _weight: number;
 private _origin: string;
 constructor(weight: number = 0, origin: string = "") {
   this._weight = weight;
   this._origin = origin;
 }
 makeNoise(noise: string = "") {
   console.log("издал звук, похожий на:  " + noise);
 }
 eat(food: string = "") {
   console.log("ест " + food);
 }
 sleep() {
   console.log("спит");
 }
 roam() {
   console.log("бесцельно бродит");
 }
}
class Bear extends Animal {
 constructor(weight: number, origin: string) {
   super(weight, origin);
 }
 makeNoise(noise: string = "рев") {
   super.makeNoise(noise);
 }
 eat(food: string = "все, что он хочет") {
   super.eat(food);
 }
}
class GrizzlyBear extends Bear {
 constructor(weight: number = 600, origin: string = "Северная Америка") {
   super(weight, origin);
 }
}
class Panda extends Bear {
 constructor(weight: number = 230, origin: string = "Китай") {
   super(weight, origin);
 }
 makeNoise() {
   super.makeNoise("писк");
 }
 eat() {
   super.eat("молодые побеги бамбука");
 }
}

Надеюсь, сам принцип понятен. А от теории, как известно, до реальной практики всего один шаг.

Добавление методов в класс

Что скажете насчет создания методов? Как я ранее упоминал, методы — это обычные функции, являющиеся частью класса. Так что вы, возможно, не удивитесь тому, что и создаются они с помощью того же ключевого слова function. Единственное отличие от создания обычных функций заключается в том, что вы также можете добавить один из идентификаторов доступа (public, private, protected) в ее объявлении. В этом методы схожи с переменными класса:

class ClassName
{
  public function methodName() {
    // (код)
  }

  private function methodName() {
    // (код)
  }

  protected function methodName() {
    // (код)
  }
}

На заметку: так же, как и в случае с переменными класса, методы public могут быть вызваны откуда угодно, методы private могут вызываться только в пределах класса, а методы protected — из самого класса и его наследника.

Давайте попробуем добавить в наш класс некоторые методы и переменные класса:

  • переменная класса private $loggedIn для идентификации пользователя, т.е. зашел он или нет,
  • метод login(), который будет осуществлять вход на форум, устанавливая значение переменной класса $loggedIn в true,
  • метод logout(), который будет осуществлять выход из форума, устанавливая значение переменной класса $loggedIn в false,
  • метод isLoggedIn(), который будет возвращать значение переменной класса $loggedIn.

Вот наш код:

<?php
 
class Member
{
  public $username = "";
  private $loggedIn = false;
 
  public function login() {
    $this->loggedIn = true;
  }
 
  public function logout() {
    $this->loggedIn = false;
  }
 
  public function isLoggedIn() {
    return $this->loggedIn;
  }
}
 
?>

Вы наверное заметили, что мы использовали новое ключевое слово $this. В контексте методов объекта специальная переменная $this ссылается на сам объект. Используя $this в методе объекта, метод может получить доступ к любой переменной класса и методу объекта.

Например, метод login() может получить доступ к переменной класса $loggedIn объекта через $this->loggedIn.

Кстати, наша переменная класса — частная (private), поэтому ее нельзя вызывать из любой части скрипта, а только из методов login(), logout() и isLoggedIn(). Это хороший подход, так как внутренняя часть объекта (например, то, как именно записывается, авторизовался ли пользователь или нет) находится отдельно от остального кода. По возможности старайтесь использовать именно переменные класса private, чтобы ваши объекты были автономными, мобильными и защищенными.

На заметку: переменная класса $username в нашем примере — public. Я это сделал только для того, чтобы продемонстрировать, как можно получать доступ к переменным класса объекта. В реальных проектах скорее нужно сделать эту переменную частной и создать специальные переменные класса public для задания значений имени пользователя, если это необходимо.

Что такое ключевое слово $ this в PHP ООП?

$ Этой ключевое слово относится к текущему объекту в PHP ООП. Ключевое слово может использоваться либо для установки значения для текущего объекта, либо для получения значения.

Есть два метода обновления значения атрибуты класса.

  1. Использование ключевого слова $ this
  2. Установите значение напрямую с помощью объекта.

Посмотрите на следующий пример, в котором мы используем $ это ключевое слово внутри функции, чтобы установить значение цвета питомца.

Убедитесь, что в приведенном выше примере псевдоним будет установлен для объекта, вызывающего эту функцию. В следующем примере мы установим псевдоним без использования ключевого слова $ this.

Классы и объекты

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

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

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

Класс в PHP ООП — это план или шаблон, по которому устанавливается экземпляр класса, создается объект. После того, как был создан класс, мы можем создать столько объектов, сколько захотим. На рисунке, приведенном выше, из одного класса (плана) были созданы пять объектов (домов). Объект всегда будет соответствовать инструкциям, приведенным в классе, используемом для его создания.

Популярные языки объектно-ориентированного программирования

Java, Python, C ++, Lisp и Perl — всё это примеры популярных объектно-ориентированных языков программирования. Они поддерживают программирование с использованием парадигмы классов и объектов.

Пять из самых популярных объектно-ориентированных языков включают:

  1. Java.
  2. Python.
  3. C++.
  4. Ruby.
  5. C#.
  • Java — есть повсюду, и это один из самых используемых и востребованных языков всех времён. Девиз Java — «напиши один раз, запусти где угодно», и это отражается на количестве платформ, на которых она работает, и местах её использования.
  • Python —  универсален и используется во многих местах. Однако Python прочно обосновался в машинном обучении и науке о данных. Это один из предпочтительных языков для этой новой и постоянно растущей области.
  • C ++ — обладает скоростью C с функциональностью классов и объектно-ориентированной парадигмой. Это скомпилированный, надежный и мощный язык. Фактически, он даже используется для создания компиляторов и интерпретаторов для других языков.
  • Ruby —  ещё один язык программирования общего назначения. Он был построен для простоты. С учётом сказанного, Ruby — невероятно мощный язык. Создатель Ruby, Юкихиро «Мац» Мацумото, сказал: «Ruby очень прост на вид, но очень сложен внутри, как и наше человеческое тело».
  • C # — это язык программирования, разработанный Microsoft. Он был разработан для улучшения существующих концепций C. C # поддерживает платформу Microsoft.NET вместе со многими веб-приложениями, играми, настольными приложениями и мобильными приложениями.

Есть и другие объектно-ориентированные языки, которые мы не рассмотрели выше. Perl, Objective-C, Dart, Lisp, JavaScript и PHP тоже являются объектно-ориентированными или поддерживают объектно-ориентированные принципы.

Моделирование на более высоком уровне абстракции. Абстрактные классы и интерфейсы.

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

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

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

Если в классе объявлены абстрактные методы, то и класс тоже должен быть объявлен как абстрактный. Абстрактный класс может содержать и обычные методы и поля. Нельзя создавать объект абстрактного класса, но его нужно переопределять классами потомками. Т.е. абстрактные классы служат прототипами классов, которые наследуют их основу. Мы безоговорочно должны принять правила, диктуемые нам абстрактными классами. Если мы объявили абстрактный метод с двумя параметрами, то в последующих классах мы должны реализовать одноименный метод именно с тем же числом параметров.

Создадим абстрактный класс для класса GuestBookDb, а класс SharedGuestBookDb мы можем унаследовать как от абстрактного класса, так и от класса GuestBookDb.

Абстрактные классы выгодны тогда, когда в них содержится менее абстрактная реализация, например, как в нашем примере. А если нам необходима только абстракция? И нужно унаследовать класс от нескольких абстрактных сущностей, мы же помним, что наследовать мы можем только от одного класса? И на сцену выходят интерфейсы. В интерфейсе можно объявлять без спецификаторов, в т.ч. и abstract. В интерфейсе можно определять только абстракцию действий, т.е. методы, которые могут быть только публичными. Действительно, мы же абстрагируем видимую реализацию. Нам надо показать не только себе, но и другим разработчикам работу нашего класса. Давайте рассмотрим интерфейс на практике. Немного изменим наш предыдущий код.

Мы можем наследовать сразу несколько интерфейсов. Усовершенствуем нашу гостевую, добавим методы обновления базы данных и выборки определенной записи по конкретному идентификационному номеру.

Мы можем наследовать одновременно как класс, так и интерфейс. При этом класс наследуется первым. Один интерфейс может наследовать другой интерфейс применяя ключевое слово extends.

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

Вот несколько тем форума, в которых обсуждается объектно-ориентированный подход в PHPhttp://www.softtime.ru/forum/read.php?id_forum=1&id_theme=161http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=641http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=3061http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=6076http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=11514http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=21195http://www.softtime.ru/forum/read.php?id_forum=2&id_theme=22535

3 Что учить дальше?

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

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

Изучите библиотеку модульного тестирования вашего языка программирования и попробуйте писать тесты.
Посмотрите литературу о шаблонах проектирования , при этом я рекомендую не пытаться запомнить детали реализации паттернов, а ответить на вопросы «где я могу применить этот шаблон?», «какую пользу и вред я с этого получу?». Если это кажется вам тяжелым — посмотрите как с помощью паттернов можно улучшить качество кода .

3.1 Список использованных источников

  1. Рейтинг популярности языков программирования TIOBE. URL: https://tiobe.com/tiobe-index/
  2. SOLID принципы. Рефакторинг. URL: https://pro-prof.com/archives/1914
  3. Почему мне кажется, что студентов учат ООП неправильно. URL: https://habr.com/ru/post/345658/
  4. C++ Russia 2018: Фёдор Короткий, Память – идеальная абстракция. URL: https://vk.com/wall-105242702_701
  5. Мейер Б. Объектно-ориентированное конструирование программных систем. М.: Издательско-торговый дом «Русская Редакция», «Интернет-университет информационных технологий», 2005. 1232 с.: ил.
  6. Мартин Р. Чистый код. Создание, анализ и рефакторинг. Библиотека программиста. – СПб.: Питер, 2014. – 464 с.
  7. Джейсон Мак-Колм Смит Элементарные шаблоны проектирования : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2013. — 304 с.
  8. Диаграммы классов UML. URL: https://pro-prof.com/archives/3212
  9. Юнит-тестирование. Пример. Boost Unit Test. URL: https://pro-prof.com/archives/1549
  10. Э. Гамма Приемы объектно-ориентированного проектирования. Паттерны проектирования / Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес. – СПб.: Питер, 2009. – 366 с.

Класс и объект

Что такое класс или тип? Проведем аналогию с реальным миром. Если мы возьмем конкретный стол, то это объект, но не класс. А вот общее представление о столах, их назначении – это класс. Ему принадлежат все реальные объекты столов, какими бы они ни были. Класс столов дает общую характеристику всем столам в мире, он их обобщает.

То же самое с целыми числами в Python. Тип int – это класс целых чисел. Числа 5, 100134, -10 и т. д. – это конкретные объекты этого класса.

В языке программирования Python объекты принято называть также экземплярами. Это связано с тем, что в нем все классы сами являются объектами класса type. Точно также как все модули являются объектами класса module.

>>> type(list), type(int)
(<class 'type'>, <class 'type'>)
>>> import math
>>> type(math)
<class 'module'>

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

Основные принципы ООП

Абстракция

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

То же самое верно и для объектов в ООП. В любом встроенном методе присутствует скрытый функционал. Например, в примере с объектом «Дом» есть метод . Он может состоять из нескольких элементов: поворота ключа в дверном замке, дергания за ручку и т.д. Но нам с вами не обязательно об этом знать. Все, что нужно, прописать этот метод в редакторе кода и она откроется. Это абстракция.

Инкапсуляция

Инкапсуляция — это один из способов создания абстракции. Каждый объект представляет собой набор данных (переменные, методы).

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

Наследование

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

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

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

Вывод: Вместо того, чтобы создавать новые классы для всего, можно создать базовый класс, а затем расширить его новыми подклассами, там, где это необходимо. Создание подклассов экономит много времени, однако злоупотреблять их созданием не стоит, чтобы в них не запутаться.

Полиморфизм

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

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

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

Создание объекта

Так как класс — это шаблон для создания объектов, следовательно, объект — это данные, которые создаются и структурируются в соответствии с шаблоном, определенным в классе. Объект также называют экземпляром класса, тип которого определяется классом. Для создания нового экземпляра класса нам понадобится оператор new. Он используется совместно с именем класса следующим образом:

<?php
  
  // Ключевое слово new сообщает интерпретатору PHP о необходимости
  // создать новый экземпляр класса first
  $obj1 = new first();
  $obj2 = new first();

?>

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

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

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

Определение класса

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

<?php

  class first {
    // Тело класса
  }

?>

Класс из приведенного примера — уже полноправный класс, хотя пока и не слишком полезный

Но тем не менее мы сделали нечто очень важное. Мы определили тип, т.е

создали категорию данных, которые мы можем использовать в своих сценариях. Важность этого станет для вас очевидной по мере дальнейшего чтения главы.

Что такое язык программирования?

Язык программирования — это набор правил и процедур, которые позволяют программистам давать компьютерам набор инструкций для выполнения. У каждого языка программирования есть собственный синтаксис, который после изучения позволяет указывать компьютеру, какие задачи он должен выполнять.

Подумайте об этом таким образом. Английский — это язык, на котором вы можете общаться с англоговорящими. Когда вы знаете основные правила английского языка, вы можете разговаривать с любым, кто понимает эти же правила. Но компьютеры не могут понимать английский или любой другой «традиционный» язык в этом отношении.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Люкс-хост
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: