Чат Telegram
Группа ВКонтакте
Новый комментарий


ArtemijeKA 28.10.2018 в 09:50

Ооочень насыщенный. Как бы все переварить.

ivashkevich 28.10.2018 в 10:22

Да, тема не самая простая. Изучай в несколько подходов.

sirserik 03.03.2019 в 15:39

Уважаемый автор, хоть бы исходники к урокам поставили ато код откуда то появляется и куда то исчезает, новичкам как я не понять. Куда делся код в конструкторе куда делся дланные передаваемые в вид у меня сыпится миллион ошибок в лгог пожалуйста покажи исходники к этому уроку.

ivashkevich 03.03.2019 в 21:50

Привет. Репа тут - https://gitlab.com/ivashkevitch/myproject

Dram 17.05.2019 в 18:32

С сожалением должен признать что уроки превратились в ctrl C => ctrl V. Очень много материала вываливается за один урок, и я уже перестал что-то понимать сам. Да и домашки опять нет.
Если что-то неудачно скопировал - ошибку найти практически не возможно с нашим уровнем :((

ivashkevich 17.05.2019 в 21:56

Попробуйте не бежать вперед как можно быстрее, а разбираться более глубоко в теме. Ученик, дошедший до данного урока уже сам должен разбираться в ошибках. Учитесь дебажить. Опыт других учеников показывает, что с уроками всё в порядке.

ashfedor 17.06.2019 в 14:08

Материала действительно много, я бы советовал всем оставлять везде в коде комментарии.
Потом просто создадите свой проект по этому шаблону и все станет на свои места.

sergey.demin1997@gmail.com 19.07.2019 в 01:41

Немного непонятки, почему при вардампе вот этого $article = Article::getById($articleId);
Он говорит что это обьект

ivashkevich 19.07.2019 в 07:03

А что там должно быть?

Metey 20.07.2019 в 22:11

отличный урок!!

Тема мне кажется тут ошибка в коде :
в этой строке <p>Автор: <?= $article->getAuthor()->getNickname() ?></p>
Должно же быть getAuthorId() вместо getAuthor() ?????

<?php include DIR . '/../header.php'; ?>
<h1><?= $article->getName() ?></h1>
<p><?= $article->getText() ?></p>
<p>Автор: <?= $article->getAuthor()->getNickname() ?></p>
<?php include DIR . '/../footer.php'; ?>

ivashkevich 21.07.2019 в 05:33

Нет, всё правильно. Посмотри внимательно на метод getAuthor.

Metey 22.07.2019 в 08:42

это я у себя тут что-то начудил, нашел ошибку)

Iliusha99 21.07.2019 в 16:23

Вроде как в коде понимаю, вижу что происходит, берет отсюда, идет там, потом обрабатываем и так далее, ошибки если что вроде разбираюсь где найти и что перезаписать, но, вот чтобы я сам такое сделал, чтобы взять и сказать: давайте так, нам нужно страничку, потом контроллер для нее чтобы работать с БД, потом наследоваться от ActiveRecord и многое такое, я по прежнему не могу сам писать((

ivashkevich 21.07.2019 в 19:18

Сможешь через несколько уроков, не бойся

vtolstov 03.10.2019 в 08:23

Вот это жееесть! Вроде осилил, но придется еще не раз это переосмыслить.

ivashkevich 03.10.2019 в 17:16

Изи, изи)

Pro100Bah 07.10.2019 в 17:02

Предыдущие вопросы сами собой отпали, но чтоб все это переварить, ладно справимся)))

P.S.
Прям кайфанул от урока)))

ivashkevich 07.10.2019 в 17:15

Еее!

prinzplanloser0514@gmail.com 08.10.2019 в 22:27

Что-то я пропустил

   public function main()
    {
        $articles = $this->db->query('SELECT * FROM `articles`;', [], Article::class);
        $this->view->renderHtml('main/main.php', ['articles' => $articles]);
    }
}

['articles' => $articles] вот этот момент зачем нам нужен?

ivashkevich 08.10.2019 в 22:34

Переменную в шаблон передаём таким образом. Этот массив потом попадает в функцию extract, перед подключением шаблона.

iluha22 29.10.2019 в 06:35

У меня после всех манипуляций на странице "http://newproj.loc/articles/2" вышла следующая ошибка:

Fatal error:
Uncaught TypeError:
Return value of MyProject\Models\ActiveRecordEntity::getById() must be an instance of MyProject\Models\ActiveRecordEntity or null, array returned in C:\OSPanel\domains\newproj.loc\src\MyProject\Models\ActiveRecordEntity.php:54 Stack trace: #0 C:\OSPanel\domains\newproj.loc\src\MyProject\Controllers\ArticlesController.php(20): MyProject\Models\ActiveRecordEntity::getById(2) #1 C:\OSPanel\domains\newproj.loc\www\index.php(30): MyProject\Controllers\ArticlesController->view(2) #2 {main} thrown in C:\OSPanel\domains\newproj.loc\src\MyProject\Models\ActiveRecordEntity.php on line 54

Вот и всё тут. И не могу найти где собака зарыта.

ivashkevich 29.10.2019 в 06:56

Ошибку не пробовал прочитать?

iluha22 29.10.2019 в 07:10

Вернутое значение getById должно быть экземпляром или нулем, массив получился в ActiveRecordEntity на 54 строке.
И про что это!? ))

 public static function getById(int $id): ?self
    {
        $db = new Db();
        $entities = $db->query(
            'SELECT * FROM `' . static::getTableName() . '` WHERE id=:id;',
            [':id' => $id],
            static::class
        );
// стр.54:
        return $entities ? $entities[0] : null;
    }
ivashkevich 29.10.2019 в 09:41

Про то что или объект класса или нулл должны вернуться. А возвращается массив. Из-за этого ошибка. Разбирайся, почему там массив.

iluha22 29.10.2019 в 09:58

Потому что так в уроке было показано(!) :)

ivashkevich 29.10.2019 в 10:03

Дебаггер в руки и вперёд

iluha22 29.10.2019 в 12:05

Всё как всегда банально оказалось.
В подключении к дб осталась старая запись:

return $sth->fetchAll();

А должно было быть через классы:

return $sth->fetchAll(\PDO::FETCH_CLASS, $className);

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

ivashkevich 29.10.2019 в 12:32

Красава!

iluha22 29.10.2019 в 12:38

Та ваще капец, моск ломает нещадно... фуф...

ivashkevich 29.10.2019 в 13:08

Сам порешал, молодец. Учись читать ошибки, в них всё есть.

zeexo 22.11.2019 в 23:53

ivashkevich, спасибо за урок!
Всё доступно и понятно.
Подскажите, как расширить этот класс?
Например:

$article = Article::getById($articleId);

Как грамотно реализовать добавление дополнительных условий?
Например, вместо getById учитывать несколько условий: WHERE x = 'y' AND a = 'b' ORDER BY k DESC LIMIT n;

ivashkevich 23.11.2019 в 06:02

Судя по запросу вам требуется уже не способ достать по ID, а что-то другое. Просто добавляете в нужную сущность метод findByXAndA()

daneela 04.12.2019 в 21:55
 public function __set(string $name, $value)
    {
        $camelCaseName = $this->underscoreToCamelCase($name);
        $this->$camelCaseName = $value;
    }

    private function underscoreToCamelCase(string $source): string
    {
        return lcfirst(str_replace('_', '', ucwords($source, '_')));
    }

Эти два метода не работают в паттерне, из-за этого не могу вывести никнейм, в чем может быть проблема?Когда методы возвращаю в Article.php всё работает

ivashkevich 05.12.2019 в 14:53

Вы уверены, что понимаете, что такое паттерн?

daneela 05.12.2019 в 22:06

Ошибся, буду дальше изучать

ivashkevich 07.12.2019 в 19:50

С вопросом-то разобрались?) Если нет - напишите лучше в телегу или ВК.

Логические задачи с собеседований