Спасибо за урок! Андрей жму Вам руку за то, что создаете такие подробные видео на своем канале
@matroskin97811 ай бұрын
Пожалуйста 😉
@mr_riabov5 ай бұрын
Вирішив коментувати і лайкати всі ваші відео, бо цей скарб мають бачити якомога більше людей)
@matroskin9785 ай бұрын
Дякую)
@ЭдемСмаил3 ай бұрын
благодаря вам разобрался в правильном подключении файлов с помощью констант, используя точку входа !100 очков вам в карму!
@matroskin9783 ай бұрын
Спасибо ☺
@screomyscreomy671411 ай бұрын
Большое спасибо за объяснение каждой строчки в файле .htaccess 🤝
@StasKantor Жыл бұрын
Спасибо тебе большое. Круто ты объясняешь. Уроки просто супер
@ВладимирК-ь9г Жыл бұрын
Спасибо. Отличный урок и бъяснение, также хорошо, что с мелкими ошибками, помогает их быстрее находить. То, что нужно после теории.
@matroskin978 Жыл бұрын
Пожалуйста 🙂
@dreamypioneer3760 Жыл бұрын
У вас очень хорошие уроки. Часто помогают, когда нужно разобраться с детальностью изучения какой-то темы. Было бы круто, увидеть от вас детальный разбор .htaccess или например работы с websoket. :)
@matroskin978 Жыл бұрын
Спасибо) По htaccess думал записать серию уроков. Возможно, дойдут руки)
@dreamypioneer3760 Жыл бұрын
@@matroskin978 Мне кажется, я ваш голос где-то уже на другом канале слышал. У вас нет ещё одного ютуб канала? Просто на этом канале подозрительно мало подписчиков, а контент хороший.
@matroskin978 Жыл бұрын
@@dreamypioneer3760 скорее всего, Вам не кажется 🙂 Около 10 лет я сотрудничал с проектом WebForMyself, вместе с которым записал огромное количество уроков и курсов, как бесплатных так и коммерческих. Чуть менее года тому я открыл свой канал, который теперь и развиваю. Поэтому на канале не так много подписчиков, поскольку каналу по факту пока меньше года. Хотелось бы, конечно, более активного развития... но как есть пока 😏
@dreamypioneer3760 Жыл бұрын
@@matroskin978 теперь понятно где я вас слышал. Удачи в развитии канала)
@matroskin978 Жыл бұрын
Спасибо)
@bzzq2314 Жыл бұрын
Спасибо за крутые уроки)
@matroskin978 Жыл бұрын
Пожалуйста)
@АлександрВасилёнок-н4г Жыл бұрын
Спасибо! Отличные уроки! Добавил себе доп. Работы и делал все через Nginx замучился подключать CSS файл. Спасибо еще раз за ваши уроки.
@matroskin978 Жыл бұрын
Пожалуйста ;)
@ГармонистВитюша6 ай бұрын
Круто. Спасибо 😊
@nixonweb Жыл бұрын
Здравствуйте, Андрей! Спасибо огромнейшее за Ваши уроки я от начала и до конца смотрю несколько раз) все понятно и доходчиво! Лайк и респект Вам, еслиб оффлайн преподавали я бы учился у Вас 😊
@matroskin978 Жыл бұрын
Пожалуйста 🙂 Оффлайн занимаюсь и индивидуально. В первую очередь мне интересен как раз начальный уровень учеников. Поэтому, если интересно, то можно написать на matroskin978@gmail.com
@niks1302 Жыл бұрын
Спасибо за видео!
@ДмитроІоржев Жыл бұрын
Спасибо, как всегда все очень доходчиво!
@matroskin978 Жыл бұрын
Пожалуйста 😉
@phpstudy86259 ай бұрын
Классные уроки !!! Спасибо !!!
@matroskin9789 ай бұрын
Пожалуйста)
@sergeykondratev5721 Жыл бұрын
Спасибо, очень доступно объясняете)
@matroskin978 Жыл бұрын
Спасибо)
@dmitriivanov7010 Жыл бұрын
😀😀😀😀 Круто! Автор молодец!
@urbanmauglisq955411 ай бұрын
Спасибо!
@olegandrianov949323 күн бұрын
Если с первого раза что-то не так подключили и уже не понимаете что да как и как в уроке не получается, то смело начинайте заново. Почти даю гарантию что пойдёт много легче, во второй раз можно уже чуть на ускоренном смотреть. Как говорится, с этим нужно переспать. Буквально. А если нужно, то и третий, и пятый раз. Раньше я сделав что-то по уроку, шёл дальше, ведь новое - это интересно. Теперь я понимаю, что нужно понять каждую строчку кода, иначе будешь PHP-мартышкой (со знанием фреймворка))), но шаг влево, шаг вправо и ничего не можешь.
@ТОЛЬКОПОБЕЗДОРОЖЬЮ4 ай бұрын
Андрей здравствуйте, не подскажите в чем разница подключения файлов через dir, require __DIR__ . '/func.php'; и просто require 'func.php'; вроде бы работает и так и так, и как лучше?? Спасибо!
@matroskin9784 ай бұрын
@@ТОЛЬКОПОБЕЗДОРОЖЬЮ Здравствуйте! Я предпочитаю первый вариант, в этом случае будет использоваться абсолютный путь к файлу, т.е. полный путь. Каких-то неожиданных проблем в этом случае не будет. Во втором случае используется относительный путь. Если это простое включение одного файла в другой, то тоже никаких проблем не будет. Но если используется некоторая вложенность при подключении, т.е. из одного файла подключается второй, из второго - третий и т.д., тогда возможны нюансы. И чтобы их избежать - я предпочитаю использовать абсолютный путь. Еще лучше вместо константы __DIR__ использовать собственные константы с абсолютными путями. Это позволит безболезненней менять структуру проекта при необходимости.
@СергейМурин-ь8х10 ай бұрын
Спасибо вам)))) все очень классно
@matroskin97810 ай бұрын
Пожалуйста 🙂
@web-serg10 ай бұрын
👍👍👍
@farhad50667 ай бұрын
Спасибо, всё отлично. Если интересно вам будет, через новый Open Server 6, всё работает без .htaccess, при подключении выдаёт ошибку, единственное ваша папка public уже не нужна, она уже есть Open Server. Посмотрю что будет дальше по ходу изучения ваших уроков. Подключал Server по вашему видео.
@matroskin9787 ай бұрын
Пожалуйста) В предыдущих версиях Open Server также можно было обойтись без .htaccess, указав в настройках домена корневую папку. Файл .htaccess я показал для тех случаев, когда нет доступа к настройкам сервера.
@farhad50667 ай бұрын
Всё-таки вы правы, дошёл до следующего урока без htaccess не получается, только главная показывается и всё. Только с htaccess работает всё. Ещё раз спасибо.
@matroskin978 Жыл бұрын
Исходники к уроку - github.com/matroskin978/phpbeginners/tree/5a6747372f3b8b37390a6d2a4718aa461d9981c1
@autogarages Жыл бұрын
Андрей подскажите пожалуйста. Почему phpstorm постоянно подчёркивает константу define и предлагает её определить как const? Что в php 8.3 define уже не будет работать?
@matroskin978 Жыл бұрын
Функция define() никуда не денется, хотя бы потому, что в ней нет некоторых ограничений, которые есть в const. Поэтому можете использовать как define(), так и const. PhpStorm просто предлагает переопределить там, где это возможно, define() на const, потому что const - это более новая возможность языка и более универсальная, поскольку const можно использовать и внутри классов. Поэтому используйте любой вариант - ошибкой не будет.
@autogarages Жыл бұрын
Спасибо@@matroskin978
@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 Жыл бұрын
Да, Вы абсолютно правы, public - это зарезервированное слово и использовать его для именования констант - нельзя. На автомате сделал это по имени папки. В 9-ом уроке я исправлюсь и переименую константу с PUBLIC на WWW. Вы можете это сделать раньше 😉
@СтепанТкаченко-м8д9 ай бұрын
Интересно, как это на Nginx устроено, там есть файл подобный htaccess или используется совсем другая логика?
@matroskin9789 ай бұрын
Нет, файл .htaccess - это файл именно под Apache для изменения некоторой конфигурации на лету. Для Nginx все делается в своем файле конфигурации. В следующем уроке в комментариях предлагали конфигурацию под Nginx - посмотрите, если интересно, возможно подойдет.
@СтепанТкаченко-м8д9 ай бұрын
Именно про это и спрашивал, спасибо. Что посоветуете еще посмотреть/почитать для углубления знаний и получения навыков реальной разработки на PHP? Спасибо, что отвечаете спустя столько времени после выхода видео.@@matroskin978
@matroskin9789 ай бұрын
Посмотреть посоветовал бы свои курсы, но они платные. А вот почитать, увы, ничего не посоветую в плане процедурного PHP. Все, что видел, это пересказ документации, по сути. По ООП могу рекомендовать книгу Мэтта Зандстры.
@MyNameIsRishat Жыл бұрын
Добрый день. Я делал не через бутстрап и у меня стили так и не подключились. Какие-бы пути не указывал в header, ничего не работает. Даже через отдельную константу не работает. Хотя в шаблоне header, sidebar, footer подключаются без проблем. Кто подскажет, что нужно делать?
@matroskin978 Жыл бұрын
Добрый день! Проверяйте корректность файлов .htaccess и включен ли на сервере Apache. С одним из двух, скорее всего, есть проблема у Вас.
@razanskayabasota5 ай бұрын
@@matroskin978 Странно, но у меня тоже самое. Сижу уже час проверяю в чем может быть причина, чудеса какие то.
@Nachkar375 ай бұрын
Андрей, огромное спасибо за ваши уроки!!! Не могли бы помочь с такой проблемой: после добавления файлов .htaccess перестали работать ссылки...При клике на любую из ссылок ничего не происходит. ОООчень много всего перепробовал и никак не получается решить проблему. Даже, тупо, скачал исходники 3 урока и всё равно ничего не работает.
@matroskin9785 ай бұрын
Пожалуйста) В настройках Open Server, если используете его, проверьте, включен ли модуль Apache. Если не включен - включите с соответствующей версией PHP. Это делается во вкладке Модули. Это все, что могу подсказать, не работая с вашим приложением и окружением.
@Nachkar375 ай бұрын
@@matroskin978 Использую Open Server 6. В руководстве написано: Apache + PHP: Выберите только модуль PHP для вашего проекта. Выбрал в модулях PHP -8.0 и в файле project.ini тоже установил 8.0...и ссылки по прежнему не работают. исходные файлы все ваши с 3 урока, окружение Win 10, Open Server 6
@matroskin9785 ай бұрын
@@Nachkar37 проверил на Open Server 6, скачав исходники к уроку - все работает точно также, как и в уроке. Подскажите, пожалуйста, а что значит фраза "перестали работать ссылки" касательно данного урока? Мы ведь в этом уроке именно этого и добивались, чтобы все запросы шли на точку входа - index.php, в которой у нас абсолютно для всех адресов подключается один и тот же контроллер. Именно поэтому по всем ссылкам вы и видите одно и то же. Например, об этом я говорю на 10-ой минуте и показываю. Пересмотрите, пожалуйста, внимательнее. Если у вас так же работает, если по всем ссылкам показывает список постов - то пока что так и должно быть, именно это и было целью текущего урока - направить все запросы на один адрес.
@Nachkar375 ай бұрын
@@matroskin978 Андрей, огромное спасибо за то, что не оставляете меня в беде!) Спрошу тогда по другому: должна ли работать ссылка на страницу about.php в конце 3 урока? Должна ли она открываться?
@Nachkar375 ай бұрын
@@matroskin978 Андрей, очень извиняюсь за свою невнимательность!!! Меня почему-то переклинило, что в 3 уроке должна была работать ссылка на about.php. И из-за этого я разобрал по косточкам 2 и 3 урок...Выносил себе мозг почти неделю)))...пока не посмотрел 4 урок)))
@arthur_478 Жыл бұрын
Я немного отстаю, поэтому вопрос с небольшим опозданием. Почему нельзя вместо define("ROOT", dirname(__DIR__)) использовать define("ROOT", $_SERVER['DOCUMENT_ROOT'])? Я проверил, вроде всё работает, ничего не поломалось. Мне переменная $_SERVER['DOCUMENT_ROOT'] как-то более понятна и привычная, чем использование функции dirname().
@matroskin978 Жыл бұрын
Попробуйте создать на другом домене вложенную папку (например, чтобы она была доступна по адресу localhost/subfolder/) и в этой папке в файле index.php выведите на экран вот эти строки: var_dump(dirname(__DIR__)); var_dump(dirname($_SERVER['DOCUMENT_ROOT'])); Вы сразу увидите ответ на свой вопрос)) результат будет разным. $_SERVER['DOCUMENT_ROOT'] - содержит путь к корневой папке. К тому же, этот путь определяется в файле конфигурации, а не вычисляется автоматически. Поэтому здесь кроется две проблемы: 1. Нам не всегда нужен путь к корневой директории. Иногда нужен путь к папке, в которой выполняется именно текущий скрипт. И мой вариант даст 100% верный и нужный путь. 2. Значение в файле конфигурации определяется администратором. А это уже человеческий фактор... вписать там можно что угодно. Поэтому надеяться на это значение на все 100 не стоит. Надеюсь, ответил :)
@nixonweb Жыл бұрын
@@matroskin978 Круто!)
@_slash_- Жыл бұрын
Первый раз такое вижу. Не определяется контстанта PUBLIC - define("PUBLIC", ROOT . '/public'); public зарезервированное слово. В убунту это не удается. И phpstorm зеленым подчеркивает define, просит переименовать в const. PHP 8.0 cтоит. C нижним подчеркиванием создал, вот так: define("_PUBLIC", ROOT . '/public'); Так работает. Как то странно
@matroskin978 Жыл бұрын
Да, все верно. В 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_- Жыл бұрын
@@matroskin978 Спасибо за ответ. Я вот о чем тут подумал. PHPSTORM не выводит никакой ошибки на константу PUBLIC. И поэтому ее не видно. Но var_dump (PUBLIC) ее не выводит. Попробуйте, у вас скорей всего также. Я , к сожалению, не успел дальнейших видео по этой теме посмотреть. Может вы ее используете и у вас не возникает такой проблемы
@matroskin978 Жыл бұрын
@@_slash_- если через define определять константу PUBLIC, тогда да - PhpStorm не ругается. А вот если попробуете объявить константу PUBLIC с помощью const, тогда PhpStorm уже будет ругаться. Поэтому, как и писал выше, не стоит пытаться использовать зарезервированные слова в именованиях Вашего кода. Я как-то забыл об этом и автоматом назвал константу по имени папки. Как правило, я называю эту константу WWW. В следующем уроке, который запишу на днях, обязательно отмечу этот момент и исправлюсь. Пока что не критично, поскольку эту константу мы пока нигде и не используем. Но Вы можете пока сами переименовать ее.
@_slash_- Жыл бұрын
@@matroskin978 У меня уже именно через define ругается. Наверное в восьмой версии исправили
@matroskin978 Жыл бұрын
@@_slash_- вполне возможно, я не обратил внимания на версию, когда проверял. В любом случае, спасибо за то, что обратили внимание и подсказали. А то я Вам тут рассказываю, что нельзя использовать зарезервированные слова, а сам на автомате использовал и в ус не дую)))
@kihon1007 ай бұрын
Добрый вечер Андрей! Скажите пожалуйста, у Вас работает цензура в комментариях? 🙂
@matroskin9787 ай бұрын
Добрый вечер! За год с лишним забанил двух пользователей. За откровенное хамство в комментариях. И удалил (без бана) около 3-5 комментариев с матом. Вот и вся цензура на канале. Если куда-то пропадают комментарии, то варианта два: 1. Их удаляет сам KZbin. Например за ссылки или по каким-то другим, неведомым мне соображениям. 2. Их удаляет пользователь. Например, вчера под видео об OpenServer пользователь написал мне, что у меня в том видео сплошная вода и ему смотреть невозможно даже на скорости 3.5х. Где он нашел такую скорость и как умудряется на ней что-то понять - это отдельная история)) Мы с ним мило пообщались после чего ветка комментариев пропала. Скорее всего, ее удалил сам инициатор общения, поскольку если удаляет KZbin, то он это делает достаточно быстро, в течение нескольких минут, как правило. Здесь же ветка провисела почти сутки. Так что, если пользователи ведут себя адекватно, не хамят и общаются без мата, то я такие комментарии не удаляю. Даже если в общении есть дискуссия или не очень конструктивная критика.
@kihon1007 ай бұрын
@@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(); Сайт очень похож на Ваш написанный в курсе.
@kihon1007 ай бұрын
@@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(); Сайт очень похож на Ваш написанный в курсе.
@kihon1007 ай бұрын
Wow, то пропали, то появились 😀
@kihon1007 ай бұрын
@@matroskin978 Пока писал здесь, уже сам разобрался. Большое спасибо за курс. Непросто (для новичка в 50 лет 😀), но очень интересно.
@progerlife6690 Жыл бұрын
Однозначно лайк. На канал подписал:) Времени не хватает все учить к сожалению..((
@matroskin978 Жыл бұрын
Да, время в нашей жизни - это один из самых ценных ресурсов. И со временем мы осознаем это все больше...