Практика PHP для начинающих. Урок 3. Точка входа приложения

Поділитися
Вставка
  • Опубліковано 1 гру 2024

КОМЕНТАРІ • 82

  • @Alex_Pav0208
    @Alex_Pav0208 10 місяців тому +1

    Спасибо за урок! Андрей жму Вам руку за то, что создаете такие подробные видео на своем канале

  • @ЭдемСмаил
    @ЭдемСмаил 2 місяці тому

    благодаря вам разобрался в правильном подключении файлов с помощью констант, используя точку входа !100 очков вам в карму!

  • @mr_riabov
    @mr_riabov 3 місяці тому

    Вирішив коментувати і лайкати всі ваші відео, бо цей скарб мають бачити якомога більше людей)

  • @screomyscreomy6714
    @screomyscreomy6714 10 місяців тому +1

    Большое спасибо за объяснение каждой строчки в файле .htaccess 🤝

  • @StasKantor
    @StasKantor 11 місяців тому +1

    Спасибо тебе большое. Круто ты объясняешь. Уроки просто супер

  • @ВладимирК-ь9г
    @ВладимирК-ь9г Рік тому +1

    Спасибо. Отличный урок и бъяснение, также хорошо, что с мелкими ошибками, помогает их быстрее находить. То, что нужно после теории.

  • @dreamypioneer3760
    @dreamypioneer3760 11 місяців тому +1

    У вас очень хорошие уроки. Часто помогают, когда нужно разобраться с детальностью изучения какой-то темы. Было бы круто, увидеть от вас детальный разбор .htaccess или например работы с websoket. :)

    • @matroskin978
      @matroskin978  11 місяців тому

      Спасибо)
      По htaccess думал записать серию уроков. Возможно, дойдут руки)

    • @dreamypioneer3760
      @dreamypioneer3760 11 місяців тому

      @@matroskin978 Мне кажется, я ваш голос где-то уже на другом канале слышал. У вас нет ещё одного ютуб канала? Просто на этом канале подозрительно мало подписчиков, а контент хороший.

    • @matroskin978
      @matroskin978  11 місяців тому

      @@dreamypioneer3760 скорее всего, Вам не кажется 🙂 Около 10 лет я сотрудничал с проектом WebForMyself, вместе с которым записал огромное количество уроков и курсов, как бесплатных так и коммерческих. Чуть менее года тому я открыл свой канал, который теперь и развиваю. Поэтому на канале не так много подписчиков, поскольку каналу по факту пока меньше года. Хотелось бы, конечно, более активного развития... но как есть пока 😏

    • @dreamypioneer3760
      @dreamypioneer3760 11 місяців тому

      @@matroskin978 теперь понятно где я вас слышал. Удачи в развитии канала)

    • @matroskin978
      @matroskin978  11 місяців тому

      Спасибо)

  • @АлександрВасилёнок-н4г

    Спасибо! Отличные уроки! Добавил себе доп. Работы и делал все через Nginx замучился подключать CSS файл. Спасибо еще раз за ваши уроки.

  • @ГармонистВитюша
    @ГармонистВитюша 5 місяців тому +1

    Круто. Спасибо 😊

  • @bzzq2314
    @bzzq2314 Рік тому +2

    Спасибо за крутые уроки)

  • @dmitriivanov7010
    @dmitriivanov7010 10 місяців тому

    😀😀😀😀
    Круто! Автор молодец!

  • @niks1302
    @niks1302 Рік тому +1

    Спасибо за видео!

  • @ДмитроІоржев
    @ДмитроІоржев Рік тому +1

    Спасибо, как всегда все очень доходчиво!

  • @phpstudy8625
    @phpstudy8625 8 місяців тому

    Классные уроки !!! Спасибо !!!

  • @nixonweb
    @nixonweb Рік тому

    Здравствуйте, Андрей! Спасибо огромнейшее за Ваши уроки я от начала и до конца смотрю несколько раз) все понятно и доходчиво! Лайк и респект Вам, еслиб оффлайн преподавали я бы учился у Вас 😊

    • @matroskin978
      @matroskin978  Рік тому +1

      Пожалуйста 🙂
      Оффлайн занимаюсь и индивидуально. В первую очередь мне интересен как раз начальный уровень учеников. Поэтому, если интересно, то можно написать на matroskin978@gmail.com

  • @sergeykondratev5721
    @sergeykondratev5721 Рік тому

    Спасибо, очень доступно объясняете)

  • @СергейМурин-ь8х
    @СергейМурин-ь8х 9 місяців тому

    Спасибо вам)))) все очень классно

  • @urbanmauglisq9554
    @urbanmauglisq9554 10 місяців тому

    Спасибо!

  • @farhad5066
    @farhad5066 6 місяців тому

    Спасибо, всё отлично. Если интересно вам будет, через новый Open Server 6, всё работает без .htaccess, при подключении выдаёт ошибку, единственное ваша папка public уже не нужна, она уже есть Open Server. Посмотрю что будет дальше по ходу изучения ваших уроков. Подключал Server по вашему видео.

    • @matroskin978
      @matroskin978  6 місяців тому

      Пожалуйста)
      В предыдущих версиях Open Server также можно было обойтись без .htaccess, указав в настройках домена корневую папку. Файл .htaccess я показал для тех случаев, когда нет доступа к настройкам сервера.

    • @farhad5066
      @farhad5066 6 місяців тому

      Всё-таки вы правы, дошёл до следующего урока без htaccess не получается, только главная показывается и всё. Только с htaccess работает всё. Ещё раз спасибо.

  • @web-serg
    @web-serg 9 місяців тому

    👍👍👍

  • @ТОЛЬКОПОБЕЗДОРОЖЬЮ
    @ТОЛЬКОПОБЕЗДОРОЖЬЮ 2 місяці тому +1

    Андрей здравствуйте, не подскажите в чем разница подключения файлов через dir, require __DIR__ . '/func.php'; и просто require 'func.php'; вроде бы работает и так и так, и как лучше?? Спасибо!

    • @matroskin978
      @matroskin978  2 місяці тому

      @@ТОЛЬКОПОБЕЗДОРОЖЬЮ Здравствуйте!
      Я предпочитаю первый вариант, в этом случае будет использоваться абсолютный путь к файлу, т.е. полный путь. Каких-то неожиданных проблем в этом случае не будет. Во втором случае используется относительный путь. Если это простое включение одного файла в другой, то тоже никаких проблем не будет. Но если используется некоторая вложенность при подключении, т.е. из одного файла подключается второй, из второго - третий и т.д., тогда возможны нюансы. И чтобы их избежать - я предпочитаю использовать абсолютный путь. Еще лучше вместо константы __DIR__ использовать собственные константы с абсолютными путями. Это позволит безболезненней менять структуру проекта при необходимости.

  • @autogarages
    @autogarages 11 місяців тому

    Андрей подскажите пожалуйста. Почему phpstorm постоянно подчёркивает константу define и предлагает её определить как const? Что в php 8.3 define уже не будет работать?

    • @matroskin978
      @matroskin978  11 місяців тому

      Функция define() никуда не денется, хотя бы потому, что в ней нет некоторых ограничений, которые есть в const. Поэтому можете использовать как define(), так и const.
      PhpStorm просто предлагает переопределить там, где это возможно, define() на const, потому что const - это более новая возможность языка и более универсальная, поскольку const можно использовать и внутри классов. Поэтому используйте любой вариант - ошибкой не будет.

    • @autogarages
      @autogarages 11 місяців тому

      Спасибо@@matroskin978

  • @СтепанТкаченко-м8д
    @СтепанТкаченко-м8д 8 місяців тому

    Интересно, как это на Nginx устроено, там есть файл подобный htaccess или используется совсем другая логика?

    • @matroskin978
      @matroskin978  8 місяців тому

      Нет, файл .htaccess - это файл именно под Apache для изменения некоторой конфигурации на лету. Для Nginx все делается в своем файле конфигурации. В следующем уроке в комментариях предлагали конфигурацию под Nginx - посмотрите, если интересно, возможно подойдет.

    • @СтепанТкаченко-м8д
      @СтепанТкаченко-м8д 8 місяців тому

      Именно про это и спрашивал, спасибо. Что посоветуете еще посмотреть/почитать для углубления знаний и получения навыков реальной разработки на PHP? Спасибо, что отвечаете спустя столько времени после выхода видео.@@matroskin978

    • @matroskin978
      @matroskin978  8 місяців тому

      Посмотреть посоветовал бы свои курсы, но они платные. А вот почитать, увы, ничего не посоветую в плане процедурного PHP. Все, что видел, это пересказ документации, по сути. По ООП могу рекомендовать книгу Мэтта Зандстры.

  • @PeteLunev
    @PeteLunev Рік тому

    Андрей, вы ввели константу define("PUBLIC", ROOT . '/public');
    Я попытался вывести ее на печать через функцию dd() или использовать ее при подстановке в операторе include, везде работа программы прекращается и выдаются ошибки типа:
    Parse error: syntax error, unexpected token ")", expecting ":" in C:\OpenServer\domains\test.loc\public\index.php on line 13
    Parse error: syntax error, unexpected token "public" in C:\OpenServer\domains\test.loc\public\index.php on line 13
    Не позволяет использовать зарезервированное слово.

    • @matroskin978
      @matroskin978  Рік тому

      Да, Вы абсолютно правы, public - это зарезервированное слово и использовать его для именования констант - нельзя. На автомате сделал это по имени папки. В 9-ом уроке я исправлюсь и переименую константу с PUBLIC на WWW. Вы можете это сделать раньше 😉

  • @MyNameIsRishat
    @MyNameIsRishat Рік тому

    Добрый день. Я делал не через бутстрап и у меня стили так и не подключились. Какие-бы пути не указывал в header, ничего не работает. Даже через отдельную константу не работает. Хотя в шаблоне header, sidebar, footer подключаются без проблем. Кто подскажет, что нужно делать?

    • @matroskin978
      @matroskin978  Рік тому +1

      Добрый день! Проверяйте корректность файлов .htaccess и включен ли на сервере Apache. С одним из двух, скорее всего, есть проблема у Вас.

    • @razanskayabasota
      @razanskayabasota 4 місяці тому

      @@matroskin978 Странно, но у меня тоже самое. Сижу уже час проверяю в чем может быть причина, чудеса какие то.

  • @Nachkar37
    @Nachkar37 4 місяці тому

    Андрей, огромное спасибо за ваши уроки!!! Не могли бы помочь с такой проблемой: после добавления файлов .htaccess перестали работать ссылки...При клике на любую из ссылок ничего не происходит. ОООчень много всего перепробовал и никак не получается решить проблему. Даже, тупо, скачал исходники 3 урока и всё равно ничего не работает.

    • @matroskin978
      @matroskin978  4 місяці тому

      Пожалуйста)
      В настройках Open Server, если используете его, проверьте, включен ли модуль Apache. Если не включен - включите с соответствующей версией PHP. Это делается во вкладке Модули. Это все, что могу подсказать, не работая с вашим приложением и окружением.

    • @Nachkar37
      @Nachkar37 4 місяці тому

      @@matroskin978 Использую Open Server 6. В руководстве написано: Apache + PHP: Выберите только модуль PHP для вашего проекта. Выбрал в модулях PHP -8.0 и в файле project.ini тоже установил 8.0...и ссылки по прежнему не работают. исходные файлы все ваши с 3 урока, окружение Win 10, Open Server 6

    • @matroskin978
      @matroskin978  4 місяці тому

      @@Nachkar37 проверил на Open Server 6, скачав исходники к уроку - все работает точно также, как и в уроке.
      Подскажите, пожалуйста, а что значит фраза "перестали работать ссылки" касательно данного урока? Мы ведь в этом уроке именно этого и добивались, чтобы все запросы шли на точку входа - index.php, в которой у нас абсолютно для всех адресов подключается один и тот же контроллер. Именно поэтому по всем ссылкам вы и видите одно и то же. Например, об этом я говорю на 10-ой минуте и показываю. Пересмотрите, пожалуйста, внимательнее. Если у вас так же работает, если по всем ссылкам показывает список постов - то пока что так и должно быть, именно это и было целью текущего урока - направить все запросы на один адрес.

    • @Nachkar37
      @Nachkar37 3 місяці тому

      @@matroskin978 Андрей, огромное спасибо за то, что не оставляете меня в беде!) Спрошу тогда по другому: должна ли работать ссылка на страницу about.php в конце 3 урока? Должна ли она открываться?

    • @Nachkar37
      @Nachkar37 3 місяці тому

      @@matroskin978 Андрей, очень извиняюсь за свою невнимательность!!! Меня почему-то переклинило, что в 3 уроке должна была работать ссылка на about.php. И из-за этого я разобрал по косточкам 2 и 3 урок...Выносил себе мозг почти неделю)))...пока не посмотрел 4 урок)))

  • @matroskin978
    @matroskin978  Рік тому +1

    Исходники к уроку - github.com/matroskin978/phpbeginners/tree/5a6747372f3b8b37390a6d2a4718aa461d9981c1

  • @arthur_478
    @arthur_478 Рік тому

    Я немного отстаю, поэтому вопрос с небольшим опозданием.
    Почему нельзя вместо define("ROOT", dirname(__DIR__)) использовать define("ROOT", $_SERVER['DOCUMENT_ROOT'])? Я проверил, вроде всё работает, ничего не поломалось. Мне переменная $_SERVER['DOCUMENT_ROOT'] как-то более понятна и привычная, чем использование функции dirname().

    • @matroskin978
      @matroskin978  Рік тому +3

      Попробуйте создать на другом домене вложенную папку (например, чтобы она была доступна по адресу localhost/subfolder/) и в этой папке в файле index.php выведите на экран вот эти строки:
      var_dump(dirname(__DIR__));
      var_dump(dirname($_SERVER['DOCUMENT_ROOT']));
      Вы сразу увидите ответ на свой вопрос)) результат будет разным. $_SERVER['DOCUMENT_ROOT'] - содержит путь к корневой папке. К тому же, этот путь определяется в файле конфигурации, а не вычисляется автоматически. Поэтому здесь кроется две проблемы:
      1. Нам не всегда нужен путь к корневой директории. Иногда нужен путь к папке, в которой выполняется именно текущий скрипт. И мой вариант даст 100% верный и нужный путь.
      2. Значение в файле конфигурации определяется администратором. А это уже человеческий фактор... вписать там можно что угодно. Поэтому надеяться на это значение на все 100 не стоит.
      Надеюсь, ответил :)

    • @nixonweb
      @nixonweb Рік тому

      @@matroskin978 Круто!)

  • @_slash_-
    @_slash_- Рік тому

    Первый раз такое вижу. Не определяется контстанта PUBLIC - define("PUBLIC", ROOT . '/public'); public зарезервированное слово. В убунту это не удается. И phpstorm зеленым подчеркивает define, просит переименовать в const. PHP 8.0 cтоит. C нижним подчеркиванием создал, вот так: define("_PUBLIC", ROOT . '/public'); Так работает. Как то странно

    • @matroskin978
      @matroskin978  Рік тому +1

      Да, все верно. В PHP есть зарезервированные слова, которые нельзя использовать для именований констант, функций и классов. Вот этот список - www.php.net/manual/ru/reserved.keywords.php - там есть и public. При большом желании зарезервированные слова разрешается использовать для констант классов. Для глобальных констант - нельзя. Да и для констант классов я бы не использовал все же зарезервированные слова.
      Относительно замечания PhpStorm, то можете либо проигнорировать его (ничего страшного), либо же использовать const. Я просто привык использовать const только для констант класса. А для глобальных констант использую define(), поскольку const имеет некоторые ограничения, о которых можно прочесть в документации по ссылке - www.php.net/manual/ru/language.constants.syntax.php - там есть замечание в конце статьи.

    • @_slash_-
      @_slash_- Рік тому

      @@matroskin978 Спасибо за ответ. Я вот о чем тут подумал. PHPSTORM не выводит никакой ошибки на константу PUBLIC. И поэтому ее не видно. Но var_dump (PUBLIC) ее не выводит. Попробуйте, у вас скорей всего также. Я , к сожалению, не успел дальнейших видео по этой теме посмотреть. Может вы ее используете и у вас не возникает такой проблемы

    • @matroskin978
      @matroskin978  Рік тому +1

      ​@@_slash_- если через define определять константу PUBLIC, тогда да - PhpStorm не ругается. А вот если попробуете объявить константу PUBLIC с помощью const, тогда PhpStorm уже будет ругаться. Поэтому, как и писал выше, не стоит пытаться использовать зарезервированные слова в именованиях Вашего кода. Я как-то забыл об этом и автоматом назвал константу по имени папки. Как правило, я называю эту константу WWW. В следующем уроке, который запишу на днях, обязательно отмечу этот момент и исправлюсь. Пока что не критично, поскольку эту константу мы пока нигде и не используем. Но Вы можете пока сами переименовать ее.

    • @_slash_-
      @_slash_- Рік тому +1

      ​@@matroskin978 У меня уже именно через define ругается. Наверное в восьмой версии исправили

    • @matroskin978
      @matroskin978  Рік тому +2

      @@_slash_- вполне возможно, я не обратил внимания на версию, когда проверял. В любом случае, спасибо за то, что обратили внимание и подсказали. А то я Вам тут рассказываю, что нельзя использовать зарезервированные слова, а сам на автомате использовал и в ус не дую)))

  • @kihon100
    @kihon100 5 місяців тому

    Добрый вечер Андрей! Скажите пожалуйста, у Вас работает цензура в комментариях? 🙂

    • @matroskin978
      @matroskin978  5 місяців тому

      Добрый вечер!
      За год с лишним забанил двух пользователей. За откровенное хамство в комментариях. И удалил (без бана) около 3-5 комментариев с матом. Вот и вся цензура на канале. Если куда-то пропадают комментарии, то варианта два:
      1. Их удаляет сам UA-cam. Например за ссылки или по каким-то другим, неведомым мне соображениям.
      2. Их удаляет пользователь. Например, вчера под видео об OpenServer пользователь написал мне, что у меня в том видео сплошная вода и ему смотреть невозможно даже на скорости 3.5х. Где он нашел такую скорость и как умудряется на ней что-то понять - это отдельная история)) Мы с ним мило пообщались после чего ветка комментариев пропала. Скорее всего, ее удалил сам инициатор общения, поскольку если удаляет UA-cam, то он это делает достаточно быстро, в течение нескольких минут, как правило. Здесь же ветка провисела почти сутки.
      Так что, если пользователи ведут себя адекватно, не хамят и общаются без мата, то я такие комментарии не удаляю. Даже если в общении есть дискуссия или не очень конструктивная критика.

    • @kihon100
      @kihon100 5 місяців тому

      @@matroskin978 Да я пишу вопросы, а они пропадают 😀. Просто я выложил свой сайт (который я переписал по Вашему текущему курсу, единственное не делал пагинацию и ServiceContaner) на хостинг и начали появляться проблемы ( на OpenServer все работает штатно). Если нетрудно, посмотрите пожалуйста - при запуске сайта появляется ошибка: Fatal error: Uncaught Error: Call to a member function findAll() on bool in /profiles/k/ki/kih/kihon1975//app/controllers/books/index.php:53 На этой строке идет запрос к базе данных:
      $arrAuthorsCurrent = $db->query("SELECT DISTINCT author FROM test ORDER BY `author`")->findAll();
      Сайт очень похож на Ваш написанный в курсе.

    • @kihon100
      @kihon100 5 місяців тому

      @@matroskin978 Да я пишу вопросы, а они пропадают 😀. Просто я выложил свой сайт (который я переписал по Вашему текущему курсу, единственное не делал пагинацию и ServiceContaner) на хостинг и начали появляться проблемы ( на OpenServer все работает штатно). Если нетрудно, посмотрите пожалуйста - при запуске сайта появляется ошибка: Fatal error: Uncaught Error: Call to a member function findAll() on bool in /app/controllers/books/index.php:53 На этой строке идет запрос к базе данных:
      $arrAuthorsCurrent = $db->query("SELECT DISTINCT author FROM test ORDER BY `author`")->findAll();
      Сайт очень похож на Ваш написанный в курсе.

    • @kihon100
      @kihon100 5 місяців тому

      Wow, то пропали, то появились 😀

    • @kihon100
      @kihon100 5 місяців тому

      @@matroskin978 Пока писал здесь, уже сам разобрался. Большое спасибо за курс. Непросто (для новичка в 50 лет 😀), но очень интересно.

  • @progerlife6690
    @progerlife6690 Рік тому

    Однозначно лайк. На канал подписал:) Времени не хватает все учить к сожалению..((

    • @matroskin978
      @matroskin978  Рік тому +1

      Да, время в нашей жизни - это один из самых ценных ресурсов. И со временем мы осознаем это все больше...