<MyRusakov.ru />

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Видеокурс "Фреймворк Yii 2.0 с нуля. Пример создания сайта" обучит Вас созданию профессиональных сайтов с использованием фреймворка Yii. В курсе есть 2 раздела: теоретический и практический. В теоретическом разделе будут разобраны возможности фреймворка Yii с примерами их использования, а в практической части будет создан сайт Blog.MyRusakov.ru с помощью полученных знаний из теоретического раздела.

Так же почти ко всем урокам идут упражнения для закрепления материала из урока на практике.

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

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Создание класса в PHP

Создание класса в PHP

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

Класс состоит из следующих частей:

  1. Свойства.
  2. Конструктор.
  3. Методы.

Но прежде, чем добавлять все эти части давайте создадим описание класса (пусть файл называется "myclass.php"):

<?php
  class MyClass {

  }
?>

Здесь мы создали пустой класс с именем "MyClass". Теперь добавим в наш класс свойства для нашего будущего объекта:

<?php
  class MyClass {
    public $x;
    public $y;
    const pi = 3.1415926;
  }
?>

Здесь мы создали три свойства (кстати, свойства иногда ещё называют полями). Обратите внимание, что они доступны за пределами класса (модификатор доступа - "public"). Если бы вместо "public" был бы "private", то они были бы доступны только внутри самого класса, а если "protected", то в самом классе и в наследниках (дочерних классах). Впрочем, более подробно, мы поговорим о них в следующих статьях.

Также мы добавили одну константу. И обратите внимание, что перед именем константы нет знака "$", то есть это не переменная, и этот знак ставить не надо.

Теперь создадим конструктор.

<?php
  class MyClass {
    public $x;
    public $y;
    const pi = 3.1415926;
    public function __construct($x, $y) {
      $this->x = $x;
      $this->y = $y;
      echo "Был создан объект с параметрами: $x и $y";
    }
  }
?>

Конструктор в PHP - это функция __construct(). Этой функции мы можем передавать параметры, которые затем каким-либо образом использовать. В данном случае, мы получили параметры из конструктора и записали их в свойства класса. Обратите внимание, что обращение к свойствам класса надо обращаться через $this->имя_ свойства. Также мы вывели строку просто для того, чтобы Вы понимали, что в конструкторе Вы можете делать всё, что пожелаете (как в обычной функции).

Теперь перейдём к последнему пункту созданию класса - это добавление методов. Добавим метод, который считает и возвращает сумму свойств x и y, а также метод, возвращающий константу pi:

<?php
  class MyClass {
    public $x;
    public $y;
    const pi = 3.1415926;
    public function __construct($x, $y) {
      $this->x = $x;
      $this->y = $y;
      echo "Был создан объект с параметрами: $x и $y";
    }
    function sum() {
      $sum = $this->x + $this->y;
      return $sum;
    }
    function getPI() {
      return self::pi;
    }
  }
?>

Здесь всё очень просто: создаём переменную, в которую записываем сумму двух свойств: x и y. Потом возвращаем результат. Второй метод возвращает константу. Обратите внимание, что мы обращаемся с помощью такой конструкции: "self::имя_константы". Так обращаются к константе внутри класса.

А теперь главный вопрос: "Как использовать данный класс в PHP?". Для этого создаём ещё один файл, в котором пишем такой код:

<?php
  require_once "myclass.php";
  $myobj = new MyClass(15, 17);
  echo "<br />";
  echo $myobj->x;
  echo "<br />";
  echo $myobj->y;
  echo "<br />";
  echo MyClass::pi;
  echo "<br />";
  echo $myobj->sum();
  echo "<br />";
  echo $myobj->getPI();
?>

Здесь мы сначала подключили наш класс, потом создали объект, передав конструктору параметры (15 и 17). Затем начали выводить свойства. Как видите, синтаксис такой: "имя_объекта->имя_свойства". Безусловно, данные свойства будут выводиться только если они public, а если они являются private или protected, то, соответственно, Вы увидите ошибку. Также обратите внимание на вывод константы: "имя_класса::имя_константы".

Затем мы используем два метода (sum() и getPI()) и печатаем возвращаемые ими значения.

Если Вы впервые знакомитесь с ООП, то, думаю, что сейчас Вы в шоке. И это неудивительно, ведь тема эта очень сложная, и по ней пишут целые тома. Я постараюсь в дальнейших статьях раскрыть эту тему, чтобы Вы поняли преимущество ООП, ведь почти все, кто пишет большие скрипты на PHP используют ООП, и без него действительно трудно обойтись. А если Вы делаете небольшие скрипты, то тогда ООП использовать совсем необязательно. Но поверьте моему опыту, что если Вы будете серьёзно программировать (необязательно на PHP), то ООП Вы будете использовать в будущем на полную катушку, и я постараюсь Вам дать тот фундамент, ту базу, от которой Вы сможете уже повышать свой уровень знаний по этой теме.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (20):

lev_100rus lev_100rus 18.09.2012 01:29:15

Михаил, У Вас ошибка в предложении: "Обратите внимание, что мы обращаемся с помощью такой конструкции: "self:имя_константы". " Надо наверное написать "self::имя_константы" И пишите пожалуйста побольше статей про ООП! Реально полезная штука и многим пригодится

Ответить

Admin Admin 18.09.2012 14:01:21

Спасибо, исправил!

Ответить

kumakbtu kumakbtu 04.05.2013 14:13:10

Есть ли статический поля и методы в PHP. Если есть как надо объявлять и использовать?

Ответить

Admin Admin 04.05.2013 21:18:27

Есть: http://myrusakov.ru/php-static.html

Ответить

kumakbtu kumakbtu 04.05.2013 14:25:37

Имя класса обязательно должно быть одинаковым с именем файла? Например: файл cars.php и класс Cars. Ну как на Jave. Потом в cars.php после создание класса Cars можно дальше писать php скрипты в этом файле? Потом можно сделать так что бы когда делаем запрос из формы он отправился на определенную функцию класса, а не на все содержание php файла? Например в функцию addCar в классе Cars: <form action="cars.php/Cars/addCar" method="post"> <input type="text" name="car_name" /> <input type="submit" name="signin" /> </form>

Ответить

Admin Admin 04.05.2013 21:18:57

Нет, не обязательно. Второй вопрос вообще не понятен.

Ответить

malina95 malina95 02.06.2013 01:14:22

Здравствуйте Михаил, напишите пожалуйста статью/скрипт/готовый скрипт по автозагрузке классов и созданию объекта этого класса, нужно типа как в фреймворке CodeIgniter, тоесть там в котнроллере можно вызвать $this->load->model('social'); или $this->load->library('pagination'); вот как такое сделать ума не приложу, и кстати в нитернете такого нет, честно говорю, нет, я вот уже с ума схожу смотреть в одну точку 2 часа 17 минут, я на 381 странице в яндексе, и всё безрезультатно) Заранее спасибо

Ответить

len-ok len-ok 05.08.2013 19:30:09

Всю сущность я поняла. Но написав предложенный скрипт в итоге на мониторе получила лишь значение константы. Сумма была равна нулю. Т.е. свойства х и у отсутствовали. Уже битый час перепроверяю и не могу понять почему?

Ответить

anonim09 anonim09 18.11.2013 12:16:57

Здравствуйте, Михаил у меня есть класс для Регистрации, в нем функции для проверки поступающих с формы данных, подключения к бд и записи данных, но появляется ошибка: Parse error: syntax error, unexpected T_PUBLIC in Q:\home\local.site\www\php\regestration.php on line 27. Не подскажите, в чем дело?

Ответить

tikkiwiki tikkiwiki 18.11.2013 16:20:10

Здравствуйте Аноним. Пожалуйста, приведите пример вашего кода. Но постараюсь ответить на Ваш вопрос заранее. Эта синтаксическая ошибка, связанная с тем, что public может быть использован только в функции объявленной внутри класса. Пожалуйста, просмотрите внимательнее Ваш код на наличие данной ошибки.

Ответить

anonim09 anonim09 18.11.2013 16:51:21

Спасибо за ответ, но правильно ли я понимаю, что объявлять функции нужно так: $page = new Regestration(); //Объявление класса $page = connectMysql(); //Объявление функции Я так делал.

Ответить

tikkiwiki tikkiwiki 18.11.2013 17:33:29

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

Ответить

anonim09 anonim09 18.11.2013 18:00:36

А смотрел весь этот курс, но там только в процедурном стиле а я использую ООП.

Ответить

tikkiwiki tikkiwiki 18.11.2013 18:20:22

И это все равно Вас не спасает от моей рекомендации.

Ответить

anonim09 anonim09 18.11.2013 20:25:26

Спасибо большое только сейчас вникнул и понял, в чём моя ошибка.

Ответить

tikkiwiki tikkiwiki 18.11.2013 21:23:41

Не за что, искренне рад за Вас.

Ответить

Yuliya Yuliya 13.03.2014 15:12:13

Елена, у меня та же история была. Оказалось, что в строчке "public function __construct($x, $y) {" два двойных подчёркивания, а я одно поставила.

Ответить

vasmar vasmar 07.11.2014 16:48:18

Михаил, здравствуй. Подскажи, пожалуйста, у меня в результате выполнения первые три строчки - пустые, потом идет вывод pi, далее вывод суммы (она равна 0), и снова вывод пи. Т.е.значения x и y - не присваиваются. С чем это может быть связано? И у меня нет подсветки синтаксиса имени класса. Может у меня не "подключается" сам класс? ? Спасибо, я сама разобралась. Ответ - надо ставить 2 символа подчеркивания)))

Ответить

денис2015 денис2015 17.08.2015 15:35:26

Все очень доступно и понятно спс

Ответить

blits blits 20.11.2015 20:00:22

А как можно наследовать значения из переменной при вызове? Например $class = new MyClass(); $class->getUser()->delete() Функция delete() получает значение результата getUser()

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.