<MyRusakov.ru />

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

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

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

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

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

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

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

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

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

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

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

Дерево директории на PHP

Дерево директории на PHP

Недавно меня попросили написать скрипт, который выводит дерево директории на PHP. Я решил, что это будет интересно многим, поэтому написал подобный скрипт, который сейчас продемонстрирую.

Вот весь код скрипта:

<?php
  function showTree($folder, $space) {
    /* Получаем полный список файлов и каталогов внутри $folder */
    $files = scandir($folder);
    foreach($files as $file) {
      /* Отбрасываем текущий и родительский каталог */
      if (($file == '.') || ($file == '..')) continue;
      $f0 = $folder.'/'.$file; //Получаем полный путь к файлу
      /* Если это директория */
      if (is_dir($f0)) {
        /* Выводим, делая заданный отступ, название директории */
        echo $space.$file."<br />";
        /* С помощью рекурсии выводим содержимое полученной директории */
        showTree($f0, $space.'&nbsp;&nbsp;');
      }
      /* Если это файл, то просто выводим название файла */
      else echo $space.$file."<br />";
    }
  }
  /* Запускаем функцию для текущего каталога */
  showTree("./", "");
?>

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

Я Вам предлагаю найти у себя на компьютере сайт, где много директорий, поддиректорий и файлов и испытать данный PHP-скрипт, построив дерево корневой директории.

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

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

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

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

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

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

  1. Кнопка:

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

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

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

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

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

sync.o sync.o 10.11.2011 10:42:19

Классный скрипт, вот только почему-то скан доходит только до первой глубины вложенности каталогов, а подкаталаги уже не сканирует(

Ответить

yurfact yurfact 15.12.2011 17:21:42

Поменяйте строку if (is_dir($file)) на if (is_dir($f0)) и будет Вам счастье!

Ответить

Admin Admin 15.12.2011 17:44:35

Спасибо большое! Подправил.

Ответить

malina95 malina95 12.08.2012 20:13:29

А может вы всё-таки напишите скрипт древовидных комментариев ? Или вы не хотите писать потому что есть статья?

Ответить

Admin Admin 12.08.2012 21:32:10

Нет, пока писать скрипт времени нет.

Ответить

malina95 malina95 13.08.2012 16:39:15

Ясно, а в будушем напишите?

Ответить

Admin Admin 13.08.2012 21:20:17

Посмотрим.

Ответить

Alexander Alexander 09.04.2013 20:08:47

Мне тоже интересно узнать, как выводить древовидные комментарии, т.е. как у вас, при использовании кнопки/ссылки "Ответить" рядом с комментарием. С добавлением комментария - проблем никаких, как и с выводом; вот что я действительно не могу понять, как заставить комментарий "сместиться" в сторону, при помощи PHP...

Ответить

Admin Admin 09.04.2013 21:10:51

Это не при помощи PHP, а при помощи CSS. А PHP лишь генерирует соответствующий HTML-код, который ничего не смещает сам по себе.

Ответить

Alexander Alexander 10.04.2013 13:59:12

То есть, нужно заранее написать стиль для смещения, и шаблон, в который PHP будет загружать комментарий, и присваивать соответствующий стиль? Или же нужен всего один стиль, а при помощи PHP мы должны вставить шаблон комментария перед закрывающим тегом, чтобы получились древовидные комментарии? Я правильно вас понимаю? Если нет, тогда я в отчаянии... :)

Ответить

Admin Admin 10.04.2013 15:16:38

<ul> <li>Комментарий<ul><li>Ответ<ul><li>Ещё ответ</li></ul></li></ul></li></ul> - вот древовидные комментарии, и у каждого ul должен быть margin-left. Вот такую структуру надо генерировать на PHP, задача непростая, требуется рекурсия. Без хороших знаний точно не обойтись.

Ответить

Alexander Alexander 10.04.2013 17:04:53

Понятно. Спасибо.

Ответить

Олег Олег 10.09.2013 14:16:57

Здравствуй Михаил! У меня код: <ul> <li>%menu% </li> </ul> где <li>%menu% </li> представляет собой: <h1>%title%</h1><ul><li><a href = "%link%">%titlearticle%</a> </li></ul> Подскажи пожалуйста направление мысли, в части написания кода, и оптимального составления таблицы в базе. Я хочу написать скрипт, где будет генерироваться некоторое количество <li> внешнего уровня, а внутри будет также генерироваться <h1>общий для некоторого количества внутренних <li>, которые в свою очередь, тоже будут генерироваться. То есть по русски будет список с названиями разделов, и каждому разделу будет принадлежать несколько ссылок подразделов

Ответить

Admin Admin 11.09.2013 17:50:00

Всё стандартно в подкатегориях просто добавляете поле с указанием id родительской категории и так далее.

Ответить

master_z1zzz master_z1zzz 16.05.2015 15:03:34

Добрый день, Михаил. Спасибо за хороший скрипт. Одна только проблема. Файлы в каталоге выводятся не так как надо, не пойму, они или по дате выводятся или по типу? У меня выводятся бардаком, нельзя ли как-то их по полочкам разложить, что б из директории выводились сперва под-категории, а потом файлы, а то сейчас всё вперемешку.

Ответить

ivan5555 ivan5555 10.08.2016 15:54:32

$files = scandir($folder, $sorting_order = SCANDIR_SORT_ASCENDING); вывод по алфавиту. sorting_order По умолчанию, сортировка производится в алфавитном порядке по возрастанию. Если необязательный параметр sorting_order установлен в значение SCANDIR_SORT_DESCENDING, сортировка производится в алфавитном порядке по убыванию. Если же он установлен в значение SCANDIR_SORT_NONE, то сортировка не производится.

Ответить

ivan5555 ivan5555 10.08.2016 12:42:18

Поднаточил скрипт немного -добавил подсказку около названии директории, что это не файл, заменил тупые пробелы на тире, чтобы по их количеству виден был уровень вложенности. Код: <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title></title> </head> <body alink="#000088" bgcolor="#FFFFFF" link="#0000FF" text="#000000" vlink="#FF0000"> <?php error_reporting(E_ALL ^ E_NOTICE); ini_set('display_errors', 1); echo " <h1>Дерево директорий и файлов:</h1><br><br>"; function showTree($folder, $space) { // Получаем полный список файлов и каталогов внутри $folder $files = scandir($folder, $sorting_order = SCANDIR_SORT_ASCENDING); foreach($files as $file) { //Преобразуем спецсимволы в именах в штмл-сущности: $file = htmlspecialchars($file, ENT_NOQUOTES | ENT_SUBSTITUTE,'UTF-8'); // Отбрасываем текущий и родительский каталог if (($file == '.') || ($file == '..')) continue; $f0 = $folder.'/'.$file; //Получаем полный путь к файлу // Если это директория if (is_dir($f0)) { // Выводим, делая заданный отступ, название директории echo $space.$file."&nbsp;&nbsp;<b><font color=\"#cc0000\">&lt;DIR&gt;</font></b><br>"; // С помощью рекурсии выводим содержимое полученной директории showTree($f0, $space.'-'); } // Если это файл, то просто выводим название файла else echo $space.$file."<br>"; } } // Запускаем функцию для текущего каталога showTree("./", ""); ?> </body> </html>

Ответить

ivan5555 ivan5555 10.08.2016 12:45:01

Странно, почему все строки в комментах валятся в кашу ? Как форматировать комментарии?

Ответить

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