<MyRusakov.ru />

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

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

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

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

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

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

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

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

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

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

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

Ссылочные переменные PHP

Ссылочные переменные PHP

Ссылочные переменные в PHP - это замена указателей в C++. Но так как многие не знакомы с языком C++, то я расскажу о ссылочных переменных более подробно в этой статье. Пожалуй, ссылочные переменные в PHP - это одно из основных понятий, которое необходимо знать, иначе Вы даже не сможете пользоваться справочником.

Начнём с первого типа ссылочных переменных - жёсткие ссылки. Жёсткая ссылочная переменная - это синоним другой переменной:

<?php
  $a = 5;
  $b = &$a;
  $a = 8;
  echo $b;
?>

Теперь объясняю, что здесь написано. Вначале мы создаём переменную a, которой присваиваем значение 5. Дальше мы создаём жёсткую ссылку b на переменную a. Затем изменяем переменную a. И ввиду того, что b - это синоним a, у нас изменяется и b тоже. То есть значение одно, а переменных, ссылающихся на это значение, две.

Теперь очень важное правило: "Переменная существует до тех пор, пока на неё ссылается хотя бы одна ссылка". То есть пока мы не удалим все ссылки на ячейку памяти, в которой хранится значение, наша память не освободится. Например, чтобы избавиться от переменной в примере выше необходимо написать следующие строки:

unset($a);
unset($b);

Только после этих строк переменная исчезнет.

Переходим ко второму типу (и последнему) ссылочных переменных в PHP, к символическим ссылкам. Символическая ссылка - это переменная, которая содержит строковое значение с именем другой переменной. Советую вдуматься в это определение, чтобы стало понятно. И сразу пример:

<?php
  $a = 17.1;
  $b = "a";
  echo $$b;
?>

В результате, как не трудно догадаться, вылезет число "17.1". Обратите внимание, что мы использовали конструкцию из двух знаков "$". Такая конструкция добирается до значения переменной, на которую ссылается символическая ссылка.

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

Теперь объясняю, почему без знания жёсткой ссылочной переменной невозможно пользоваться справочником, а, следовательно, невозможно писать скрипты на языке PHP. Давайте с Вами разберём пример одной из функций. Допустим, функция sort(array &$array), которая принимает в качестве параметра массив. А на выходе сортирует его. Встаёт вопрос: "Как работает данная функция?" То ли она принимает массив, сортирует его и возвращает, при этом аргумент никак не изменяется (то есть исходный массив не меняется вообще). То ли именно аргумент меняется и в итоге, новый массив не возвращается, а изменяется конкретно сам массив, который мы передали, тем самым, теряя исходный массив. Вдумайтесь в эти строки.

Для того, чтобы ответить на этот вопрос, надо посмотреть, что передаётся в аргумент: просто переменная, и тогда исходный массив никак не изменяется, или же всё-таки передаётся жёсткая ссылка на переменную, тогда, разумеется, исходный массив изменится. В параметрах функции sort(array &$array) чётко указано, что передаётся жёсткая ссылка (&$array), о чём свидетельствует знак "&", поэтому изменится исходный массив $array.

Надеюсь, я Вам доказал, что знание ссылочных переменных в PHP, а особенно жёстких ссылочных переменных, обязательно. И очень надеюсь, что Вы разобрались с этой, в общем-то, непростой темой.

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

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

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

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

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

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

  1. Кнопка:

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

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

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

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

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

volodya81 volodya81 04.03.2011 15:22:14

Добрый день! Подскажите пожайлуйста, как это работает: $k="title"; $v="Главная"; $$k = $v; echo $title; Тоесть, как получается так, что создается переменная $title?

Ответить

Admin Admin 04.03.2011 16:28:55

Да, создаётся переменная $title. То есть Вы задали имя будущей переменной в виде строки, которую сохранили в переменной $k. Но старайтесь избегать символических ссылок, так как они запутывают код.

Ответить

Daves Daves 26.02.2012 22:20:19

Немогу понять последние три обзаца данной статьи... Можете ли Вы,если Вас не затруднит, привести пример по проще?

Ответить

Admin Admin 26.02.2012 22:27:38

Посмотрите в справочнике функцию sort() и str_replace(), попробуйте их применить. И подумайте, в чём между ними отличие. Это отличие и происходит из-за ссылочных переменных.

Ответить

mixanik mixanik 22.08.2014 12:43:28

Михаил, поясните пожалуйста: "Переменная существует до тех пор, пока на неё ссылается хотя бы одна ссылка" После этого вы удаляете сначала переменную, потом ссылку на неё: unset($a); unset($b); Но ведь в соответствии с цитатой первая функция не удалит переменную a, потому что не удалена ссылка на неё. Я попробовал вывести переменную после её удаления - "переменной не существует". Но ссылка продолжает возвращать её значение, как будто переменную не удаляли. Что же в действительности происходит с переменной?

Ответить

Bagi Bagi 18.03.2016 07:14:20

Михаил можете объяснить, почему когда я пишу такой код: $a = 5; $b = &$a; $a = 8; echo $b; echo '<br>'; $a = 17.1; $b = "a"; echo $$b; То выводит "8" и "а", а должно вроде исходя из смысла вашей статьи выводить "8" и "17.1" ?

Ответить

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