За последние 24 часа нас посетили 39406 программистов и 1280 роботов. Сейчас ищут 1034 программиста ...

Образец кода работы с БД

Тема в разделе "PHP для новичков", создана пользователем Walk, 20 дек 2017.

  1. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.815
    Симпатии:
    1.332
    Адрес:
    Лень
    Детский сад
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    @Walk, там в примере куча ошибок. Про статические свойства ты заметил, там доллары должны быть. Плюс к статическому свойству через $this-> обращаться нельзя, как тебе твой знакомый заметил. Вообще, лучше воспользоваться DI-контейнером, положить туда экземпляр PDO и радоваться. Всё равно этот пример ничего больше интересного не сделал бы, даже если бы был нормальным. Вот прекрасный фрейморко-независимый DI-контейнер. http://php-di.org/
     
  3. Алекс8

    Алекс8 Активный пользователь

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    я кстати читал про ДИ конейнеры)) так и не понял чем они от реестра отличаются))
     
  4. Walk

    Walk Активный пользователь

    С нами с:
    7 сен 2008
    Сообщения:
    452
    Симпатии:
    86
    Ну, вообще-то это я сам заметил. Знакомый вначале сказал, что в некоторых случаях так можно делать, когда сказал ему об ошибке:
    Он таки признал, что да, нельзя.

    Меня больше удивляет, почему такой плохой пример разместили на вроде бы как авторитетном ресурсе ruhighload.com
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Хорошие di-контейнеры могут сами подставлять в конструкторы данные. Потом, можно определять через фабрику элемент, сразу с инициализацией.
    PHP:
    1. class A { public function __construct(PDO $db); }
    2. $builder = new DI\ContainerBuilder();
    3. $builder->addDefinitions([
    4. PDO::class => function (ContainerInterface $c) {      /* сюда можно вставить ещё подготовительных действий */   return new PDO(/* params */;     }
    5.  ]);
    6. $container = $builder->build();
    7.  
    8. $a = $builder->make(A::class);
     
    Алекс8 нравится это.
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    ОЙ, строка 8 должна была быть $container->make(A::class);
     
    Алекс8 нравится это.