Ответы пользователя по тегу PHP
  • Как передать переменную PHP в HTML?

    qonand
    @qonand
    Software Engineer
    1. Судя по всему Вы в data-content пытаетесь вставить объект $heroes - как Вы себе представляете результат? нужно вставлять конкретную строку содержащуюся в атрибуте объекта, например $heroes->content
    2. При чем здесь Laravel? Вы формируете обычную строку, ларавель в ней ничего не найдет и не заменит. Используйте конкатенацию строк
    Ответ написан
    1 комментарий
  • Как создавать объект с большим количеством свойств?

    qonand
    @qonand
    Software Engineer
    Обязательные параметры стоит задавать в конструкторе класса - это позволит обеспечить обязательность их указания, опциональные с помощью геттеров и сеттеров. Кроме того стоит пересмотреть действительно ли все обязательные поля являются обязательными - или некоторые все таки нет + по возможности параметры стоит упаковать в объекты-значения
    Ответ написан
  • Как правильно писать mysql запрос?

    qonand
    @qonand
    Software Engineer
    наклонные кавычки `` используются для экранирования служебных слов базы данных
    обычные '' для указания строк

    P.S. и отучитесь вставлять неподготовленные переменные в запросы, если не хотите в последствие проблем с sql-инъекциями
    Ответ написан
    Комментировать
  • Что я в итоге реализовал?

    qonand
    @qonand
    Software Engineer
    Вы уж меня извините, может я чего-то не понимаю... но сам паттерн ПРОЕКТИРОВАНИЯ где?
    Ок, у Вас есть конкретная задача и Вы ее решили - прекрасно. Но это не паттерн - это лишь один из вариантов решения ВАШЕЙ конкретной задачи.
    Ответ написан
  • Где лучше практиковаться, чтобы научиться всеми фишками патерна?

    qonand
    @qonand
    Software Engineer
    Очень хорошо что Вы задаетесь такими вопросами и пытаетесь что-то улучшить и разобраться в новом. Но стоит понимать что паттерны - это один из инструментов проектирования систем, а проектирование, при разработке систем на основе готовых CMS редко кто делает (просто уровень проектов не тот). Поэтому применимо к битриксу, Вы вряд ли где-то сможете - использовать паттерны. Хотите разобраться - пишите свой pet-проект и пытайтесь их использовать, либо ищите другую работу - не связанную с разработкой на CMS
    Ответ написан
  • Почему первый id записывается в куку сколько угодно раз?

    qonand
    @qonand
    Software Engineer
    array_search может вернуть как false так и 0 (в качестве индекса элемента). В Вашей ситуации как раз 0 и возвращается, который в нестрогой проверке интерпретируется как false.
    Просто сделайте строгую проверку ...
    if (array_search($_GET['id']-1, $lot_history) === false){
     ...
    }


    P.S. и от такого ужаса как $_GET['id']-1 по всему коду нужно избавляться..
    Ответ написан
    4 комментария
  • Как сделать фабрику с параметрами?

    qonand
    @qonand
    Software Engineer
    Для решение этой задачи стоит использовать не фабрику а DI-контейнер
    Ответ написан
    6 комментариев
  • Как решить проблему построения нескольких типов сущностей с возможностью неполного заполнения сущности из одной таблицы бд?

    qonand
    @qonand
    Software Engineer
    Без описания самих параметров сложно осознать разницу между сущностями, вообще правильность Вашего решения и дать более менее адекватные комментарии. Единственное что могу предположить, исходя из Вашего описания, так это то что Вы не правильно построили иерархию наследования. Если бы она была правильной подобных вопросов не возникало бы. Поэтому Вам стоит ее пересмотреть и заново обдумать
    Ответ написан
    Комментировать
  • Как реализовать сортировку по цене?

    qonand
    @qonand
    Software Engineer
    стандартным ORDER BY ...
    Ответ написан
    Комментировать
  • Как использовать ооп на практике?

    qonand
    @qonand
    Software Engineer
    Вот выучил я что такое классы, объекты, наследование и т.п. А как его использовать на практике не пойму(когда php выучил также было)...

    Что бы использовать ООП на практике нужно понимать саму философию ООП, понимать какую роль в этой философии играют те же классы, наследования и т.п. Мало просто знать что из себя представляют основные ООП-понятия. Что бы понять философию можно: поработать в какой-то более менее крупной компании работающей над ООП проектом/пройти какие-нибудь толковые курсы/почитать соответствующие книги, например того же Бертрана Мейера

    Есть два своих проекта написанных процедурно, но хотелось бы их под ооп переделать. А как процедурный код превратить в ооп'шный я хз.

    а вот этого Вам пока делать не стоит. Переделка проекта в ООП будет для Вас слишком сложной. Лучше сделайте какой-то учебный проект с нуля, с применением ООП парадигмы
    Ответ написан
    Комментировать
  • Как правильно работать с исключениями?

    qonand
    @qonand
    Software Engineer
    Что такое исключение? это грубо говоря оповещение о том что что-то пошло не так и программный код не может полноценно отработать. Соответственно и выбрасываться оно должно в коде где произошла проблема - т.е. в вызываемом методе, а уже вызывающий код должен как-то на нее реагировать - перелавливать с помощью try-catch и что-то делать (например как-то пытаться исправить ситуацию) либо пробрасывать ее дальше...
    Ответ написан
    Комментировать
  • Как правильно реализовать метод вывода списка?

    qonand
    @qonand
    Software Engineer
    1. Для поиска одной записи по ID было бы логичным и удобным реализовать отдельный метод, например какой нибудь findOne($id). Что касается метода getAll - что содержит массив Options? Набор параметров по которым необходимо выбирать записи? если да тогда передавать это массивом, не очень хорошая практика, лучше сделать какой-нибудь объект критерию. Да и само название $options не особо удачно...
    2. Лучше называть подобные методы например find()
    Ответ написан
    2 комментария
  • Пример метода __call в PHP?

    qonand
    @qonand
    Software Engineer
    Эмуляция множественного наследования с помощью метода __call если когда-то и была - то осталась в прошлом. Большинство задач множественного наследования вполне можно решить с помощью трейтов и интерфейсов
    Ответ написан
    Комментировать
  • Правильно ли я использую класс?

    qonand
    @qonand
    Software Engineer
    Бегло посмотрев:
    1. Зачем в классе объявлены публичные атрибуты id и text если они нигде не используются?
    2. Вы везде используете $db->prepare, но локальная переменная $db не инициализирована. В этом коде Вы должны обращаться к атрибуту класса, т.е. $this->db->prepare
    3. Зачем в каждом методе делать проверку эту проверку
    if($stmt->execute(array($text))){
       return true;
    }else{
       return false;
    }

    но какой в ней смысл если $stmt->execute и так возвращает boolean, проще написать просто
    return $stmt->execute();
    4. Да и вообще в случае возникновения ошибки лучше что бы метод не false возвращал а исключение бросал, а клиенты класса уже на него как-то реагировали
    5. В методе getAll у параметра $id лучше поставить значение по умолчанию null
    Ответ написан
    1 комментарий
  • Как из конструктора класса вернуть массив?

    qonand
    @qonand
    Software Engineer
    Само по себе наличие классов еще не означает что Вы применяете ООП-подход. Ваш код как и сам вопрос говорит о полном не понимании ООП-парадигмы. Поэтому лучше разберитесь с ней, почитайте соответствующие статьи/книги, вместо того что бы "с ходу" писать кучу подобного кода. Не хотите разбираться - тогда вообще не стоит строить проект на объектах и всем что с ними связано
    Ответ написан
    Комментировать
  • Почему нельзя наследоваться от класса БД?

    qonand
    @qonand
    Software Engineer
    Уж извините, никого не хочу обидеть, но подобное желание наследоваться от всего подряд и отсутствие понимая почему так нельзя делать говорит о полном не понимании концепции ООП. Полноценно ответить на Ваши вопросы не возможно - не хватит поста, тут целую лекцию можно написать. Да и ответы породят только дополнительные вопросы. Поэтому лучше уделите недельку другую - и прочтите пару книг по ООП, и сразу все станет на свои места..
    Ответ написан
    Комментировать
  • Нужно ли объявлять свойство db в классе?

    qonand
    @qonand
    Software Engineer
    Есть класс базы данных. Статичный синглтон.

    Синглтон это не очень хорошо ... почему - можно просто погуглить этому посвящено не мало материалов
    Нужно ли при создании новых классов создавать свойство db protected и внутри класса работать с db->, а не в DB::

    Ну тут все зависит от того как Вы будете передавать объект базы данных в конкретный экземпляр. Если будете например использовать какую-нибудь инъекцию зависимостей, тогда само собой нужно записывать объект базы в свойство класса. Если же Вы планируете в классах делать что-то типа такого $this->db = DB::getInstance() то особого профита это даст (кроме незначительного повышения читабельности кода), а вот количество используемой памяти увеличит (за счет выделения дополнительных ссылок на объект базы данных)
    Ответ написан
    4 комментария
  • Что означает эта фраза в документации?

    qonand
    @qonand
    Software Engineer
    Речь в документации идет о том что не стоит полагаться и использовать для серьезных проверок информацию из $_FILES['userfile']['type'], а стоит самому определять MIME-тип файл, например с помощью функции mime_content_type
    Ответ написан
    Комментировать
  • Сортировка товара?

    qonand
    @qonand
    Software Engineer
    я тут узнал не давно

    Откуда узнали? Вы бы источник привели хотя бы откуда такая информация...
    что бывают делают сортировку товара на сайтах через сессии

    Скорее всего Вы что-то не так поняли (поэтому и говорю за источник). С большой вероятностью имеется ввиду СОХРАНЕНИЕ параметров сортировки в сессию, а не какой-то мифический механизм определения порядка записей
    Ответ написан
    Комментировать