Ответы пользователя по тегу PHP
  • Push уведомления на IOS. Рабочая библиотека на php есть?

    @rsi
    software engineer
    Нет ну серьезно. у этой либы отправка пуша делается в 10 строк. Сложно проверить работает она или нет? или посмотреть что у нее 1к звезд, регулярные релизы и обновление репозитория. А так же у нее жевой баг трекер. Опять же можно задать вопрос там,если уж вы не боитесь задавать глупые вопросы.

    По поводу вопроса какой пользовались вы. Использовал именно ApnsPHP, впечатления положительные, простая и удобная либа. Советую.
    Ответ написан
  • Что перспективнее/интереснее на upwork - WordPress or PHP-фреймворки?

    @rsi
    software engineer
    Вы задаете не верный вопрос. Вам не нужно выбирать между WP или фреймворком. Вы серьезно решили изучить всего одну технологию, даже не язык, а технологию? Это не верный подход. Но я не призываю сразу браться за все и сразу.

    Начните с WP. Больше заказов, заказы типовые, не продолжительные, набьете себе статистику и очень скоро изучите этот WP вдоль и поперек. После этого можете приступать к фреймворку и так далее. Со временем если пойдете правильной дорогой, у вас в копилке будет не одна cms, не один фреймворк и даже не один язык.
    Ответ написан
    Комментировать
  • Как и где правильно осуществлять валидацию данных в MVC?

    @rsi
    software engineer
    Все зависит от архитектуры приложения. В идеале каждый класс должен работать только с безопасными данными, то есть прошедшими все необходимые проверки.

    Если предполагается, что ваш класс USER может быть использован где то помимо контроллера и в него могут быть переданы не безопасные данные (например вы работает на крупным проектом в команде и есть возможность, что некий член команды в каком то своем методе создаст экземпляр класса USER) то валидацию лучше проводить внутри класса USER (ваш третий вариант как я понял).

    Если у вас не большой проект и класс USER используется только в контроллерах, то более правильно делать валидацию в контроллере, так как в этом случае вы обрабатываете запрос, проверяете его корректность тем самым обезопасив данные и уже смело можете передавать их в класс USER для регистрации.
    Ответ написан
    Комментировать
  • В контроллере более 1000 строк кода. Это правильно?

    @rsi
    software engineer
    Вам все верно ответили выше, но у меня появилось одно нехорошее предположение. Вы сказали, что это контроллер админки, а вы случайно не положили в него один методы по управлению всеми сущностями сайта? Если да, то это конечно тоже не смертельно, но желательно разделить. Ну и неплохо было бы взглянуть на этот контроллер, хотя бы на имена методов.
    Ответ написан
    Комментировать
  • Сколько return может быть в методе?

    @rsi
    software engineer
    Почитайте книгу совершенный код, там автор несколько глав разбирал преимущества различных подходов. А так я вам скажу, что вариант вашего друга изврат, читать сложнее, ресурсов жреть больше, ошибки отлавливать сложнее.
    Ответ написан
    Комментировать
  • Какими способами можно добавиться умного ресайза изображений?

    @rsi
    software engineer
    Во первых вы можете использовать функции библиотеки imagick
    Во вторых, если хотите руками жедать, то есть отличная статья о формуле ресайза изображений. debugger.ru/articles/thumbnails
    Если коротко то -
    if W > H
    then
        height = H * width / W
    else
        width  = W * height / H
    end if
    Ответ написан
    Комментировать
  • Выборка из бд по id и get запросы?

    @rsi
    software engineer
    На самом деле из вашего примера ничего не ясно. Попробуйте пройтись дебагером и посмотреть соответсьвет ли алгоритм логике. Если не работаете с дебагером, то то расставьте флаги на каждом этапе. вроде такого:
    echo $_GET['id'];
    $products_id = isset($_GET['id']) ? $_GET['id'] : 0;
    echo $products_id;
    echo 'SELECT * FROM rm_products WHERE id='.$id;

    ну и так далее, вы увидите где ошибка.
    Ответ написан
  • Почему сайт на одной странице не подключается к двум разным таблицам БД?

    @rsi
    software engineer
    Как это развидеть?
    А по делу:
    1) Уберите второй конект к базе, он нужен один.
    2) Раз уж открыли соединение закрой его после того как выполните все запросы.
    3) Разберитесь с редактором в котором пишете, кракозябр быть не должно, нахватаете ошибок из такой фигни не раз.
    4) Включите отображение ВСЕХ ошибок в конфиге php, увидите в чем конкретно затык.
    5) Выкиньте то по чему вы учитесь, найдите нормальные статьи/учебник.
    6) Если у вас денвер, удалите, лучше поставьте xamp.
    Ответ написан
    Комментировать
  • Книга по php для не новичка?

    @rsi
    software engineer
    Читайте "совершенный код" и "Паттерны программирования"
    Нужны примеры именно по php, открывайте код симфони и читайте
    Ответ написан
    Комментировать
  • Почему сами разработчики не рекомендуют использовать PHP7 для продакшена?

    @rsi
    software engineer
    Потому, что они не могут гарантировать стабильной работы данного билда.
    Ответ написан
    4 комментария
  • Это говнокод? Если да, то в чем именно я провинился?

    @rsi
    software engineer
    www.ozon.ru/context/detail/id/3159814 - ответит на все ваши по говнокоду сегодня, завтра и через 10.
    Ответ написан
    4 комментария
  • Нужно ли после установки PHP устанавливать дополнительные модули?

    @rsi
    software engineer
    Думаю очевидно, что в имени каждого модуля описана технология которую он реализует. Так вот читайте, если не знаете что это ставьте, если знаете и оно вам нужно ставьте, если знаете и не нужно не ставьте. Хотя я как правило прописываю не больше 7, многое тянется вслед за common.
    Ответ написан
    2 комментария
  • Как лучше всего реализовать мультиязычность?

    @rsi
    software engineer
    Вырасти из фреймворков это на самом деле странно слышать, но дело ваше. Странно тогда почему вы задаете такие вопросы.

    donem.com/en/new?id1
    это ваш маршрут "en" идентификатор языка. Определите хранилище для переводов. Это может быть база, это могут быть файлы. У WP как ни странно отличная реализация на данный счет, они хранят переводы в .po файлах, которые даже такие моменты как 1 слон (elephant), 2 слона (elephants), 5 слонов (elephants) учитывают. Напишите один класс, который на основе идентификатора языка и оригинального слова будет выводить перевод. У вашей CMS же есть жизненный цикл, шаблоны? Вот вызывайте этот класс переводов в момент компиляции шаблона. А выглядеть это будет как то так - t("elephant"), а там внутри уже найдется соответствие исходной строки и перевода.

    Если вам не только интерфейс, но и содержимое (например статьи) переводить хочется, то определите структуру в базе (вы же в базе материалы храните?) которая бы позволяла одни те же данные хранить на разных языках и пусть ваш класс переводов отдает шаблонам данные на нужном языке на основе идентификатора языка.
    Ответ написан
    1 комментарий
  • Как лучше писать каркас сайта? Вставлять html-код в php-скрипт или наоборот php-скрипты в теги??

    @rsi
    software engineer
    Действительно, ваш вопрос очень поверхностный.
    Для начала вы должны понять, что ваше приложение (сайт) оперирует не только html и php, а логикой, отображением (шаблонами, страницами) и данными (пусть это будет база данных). Это конечно упрощенное описание, и все сложнее, но для вас сойдет.

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

    Что это означает на практике? Все ваши файлы должны быть разделены на три категории:
    1) Работа с данными (скорее всего это база данных)
    2) Логика (некие манипуляции с данными)
    3) Шаблоны (файлы где будет верстка)

    В первых двух категориях (данные, логика) у вас должно быть только php. В шаблонах вы уже используете в основном html и только в нужных местах используете php для вывода динамики.

    К примеру
    Файл работы с данными:
    //получили данные из базы
     $data = functionForDetDataFormDB();

    Файл логики:
    //К примеру нам потребовалось обрезать пробелы на концах строк взятых из базы
    array_map('trim', data);

    Файл шаблона:
    <body>
    ...
    <table>
    <?php foreach($data as $row):?>
    <tr>
    <td><?=$row['id']?></td>
    <td><?=$row['name']?></td>
    <td><?=$row['phone']?></td>
    </tr>
    <?php endforeach;?>
    </table>
    ...
    </body>


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

    @rsi
    software engineer
    Перво наперво определитесь, хотите ли вы стать профессионалом или просто хорошо делать сайты. Я бы предложил выбрать путь профессионала.

    Во вторых определитесь, каким именно профессионалом вы хотите стать:
    1. web - мастером
    2. Front end
    3. Back end
    4. Desktop
    5. Другого направления


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

    Здесь вам советовали сменить язык, не слушайте этих советов. Да Ruby имеет некоторые преимущества перед php, но имеет и недостатки. Не думайте, что если вы выберите Ruby (python) ваша жизнь измениться, вы не получите ничего, что не может вам дать php и на оборот, эти увеличенные зп и прочее миф, язык не важен. Помните, ЯП это всего лишь инструмент, вы конечно должны иметь инструмент, и должны знать свой инструмент в совершенстве, но умение программировать заключается не в этом. Да, плотник алкоголик, который зарабатывает на жизнь забивая гвозди, может хвалить свой молоток и всем рассказать, что молоток его кормилец, но согласитесь настоящий строитель умеет не только гвозди мотком забивать, не говоря уже об архитекторе, который молоток и в руках мог вообще не держать.

    И так предположим, вы выбрали свой путь, вы выбрали направление и выбрали инструмент. Теперь вам нужно работать в этом направлении (как над собой, так и в буквальном смысле работать). Читайте статьи, читайте книги (я всегда рекомендую только одну книгу - "Совершенный код", ее без преувеличивания должен прочитать каждый программист), изучайте новые фреймворки, технологии, отрасль постоянно движется вперед, вам нужно двигаться вперед еще быстрее, что бы хотя бы не стоять на месте. В процессе работы над проектами вы будете чувствовать нехватку знаний (вы упоминали js, ООП), устраняйте эти пробелы книгами (не стоит бояться 900 страниц, книги вы ничем не замените, их необходимо читать), статьями и конечно практикой. Не переживайте по поводу отсутствия высшего образования, оно не дает глубокого знания, никто не расскажет вам ни каких трюков, если у вас не будет толкового преподавателя. Но толковый преподаватель, это не обязательно учитель в универе, это может быть автор книги (например Макконел), автор хорошего инструмента (например Taylor Otwell), большинство очень известных и авторитетных людей генерирует тонну информации, книги, статьи, записи в соц. сетях, код, все это можно читать и это даст вам куда больше чем ВО. И да, мы с вами живем в уникальное время, время интернета, где нет расстояний, и это дает намного больше возможностей, чем нагуглить очередной костыль для jquery от школьника, вы можете общаться лично например со Страуструпом или тем же Тейлором, ни в одном учебном заведении России у вас не будет возможности поговорить с такими людьми.

    Подведя итог:
    1. Определите путь (хотя бы примерно)
    2. Определите специализацию (хотя бы примерно)
    3. Выберите инструмент (один основной язык, один основной фреймоврк, одну основную cms и тд)
    4. Изучите свой инструмент в совершенстве
    5. Пробуйте другие инструменты (да я сказал один яп, один фреймворк, но один вы должны знать в совершенстве, остальные должны попробовать)
    6. Расширяйте кругозор
    7. Работайте над собой
    8. Работайте
    9. Выберите наставников и учитесь у них


    Следуя этим советам вы увеличите свой скилл, сможете сами отвечать на вопрос заданный в заголовке и станете профессионалом. И помните путь профессионала, это постоянная работа (как буквально работа, так и работа над собой, если просто писать сайты 24/7 вы тоже профессионалом не станете), гораздо больше чем 8 часов в день, 5 дней в неделю.
    Ответ написан
    Комментировать
  • Как передать переменную из js в php?

    @rsi
    software engineer
    А что именно вам не ясно, код отправки данных на сервер то верный.
    Ответ написан
    Комментировать
  • Почему в таблицу базы данных добавляются сразу 2 новых записи, а не одна?

    @rsi
    software engineer
    30 не срок, что бы вопросы создавать, откройте для себе xdebug, будет проще такие косяки искать. А вообще не ленитесь использовать фигурные скобки, тогда тоже будете замечать очевидные вещи.
    if (!$STH) return false;
           if (isset($params)) $STH->execute($params);
    else $STH->execute();


    Два раза execute вызываете
    Ответ написан
  • В каких случаях стоит переписывать сайт с нуля?

    @rsi
    software engineer
    Не так давно делал правки на сайте с WP, там та же ситуация что и у вас, куча кастомизированных решений (плагинов, да и ядро пилили). Тоже делала куча кодеров.Что в итоге мы имеем:
    1) обновить нельзя ничего, так как нет гарантии что кастомный код не сломается, а найти его не просто
    2) Лезут проблемы с совместимостью (в основном это jQuery) старые плагины требуют старую версию библиотеки, новые требуют новую.
    3) Как разработчику мне действительно не удобно со всем этим работать.

    Но я не рекомендовал заказчику переписать все с 0, потому что:
    1) Рано или поздно ситуация повториться, и его новый проект обрастет кастомными правками.
    2) Легче переписать один новый плагин, что бы он работал со старыми библиотеками, чем весь проект.
    3) Зачем ломать то что работает.

    Я просто чинил все, что попадалось на глаза, непонятный код я комментировал или переписывал. В итоге я доволен, заказчик доволен, проекту лучше.
    Ответ написан
  • Почему Yii так популярен?

    @rsi
    software engineer
    Да мне кажется не в пороге вхождения дело, я знаком с Zend`ом и c Yii, и вот честно не понимаю зачем нужен зенд. Поясню, даже отлично зная как делается то или иное действие в этих фреймворках, как правило на Yii все делается намного быстрее, для многих типовых действии в yii намного больше готовых решений. Но мы все помним, что зенд для сложных проектов, где все не совсем стандартно, и что то вроде Yii не катит. Здесь у меня возникает вопрос, а не проще тогда вообще на чистом PHP писать? В большом, сложном, нестандартном проекте, скорее всего работают достаточно неплохие программисты и встает вопрос, зачем им вообще засорять свой код Zend`ом, ну разве только парой библиотек из него, но согласитесь, использовать библиотеку из фреймворка, это не использовать фреймворк. Я кстати часто натыкаюсь на такое мнение, что Zend не фреймофрк, а очень хорошая сборка библиотек.
    Ответ написан
    Комментировать
  • Хочу изучить MVC в PHP, с чего начать? Какой фреймворк выбрать для проекта?

    @rsi
    software engineer
    Тут уже все посоветовали, но внесу свои 5 копеек. Сам пишу буквально первый проект с использованием framework пробовал symfony, yii и zend и вот сугубо мое мнение:
    Zend — пришлось пораскинуть мозгами что бы установить, настроить zend_tools и подключить все это к netbeans. Перечитал кучу форумов, что бы реализовать правильную аутентификацию и авторизацию (примеров в интернете полно, но они либо неактуальной версии либо не полные), дальше пошло легче но все равно часто приходиться обращаться к форумам и документации.

    Yii — довольно просто установился, очень просто создал проект, имеет свой собственный генератор когда, но это мне в нем и не понравилось, вместо освоения с нуля приходилось разбираться в уже написанном не понятном мне коде, хотя есть неплохая документация на русском

    Symfony — тоже просто установился, проект создался не с первого раза но не сложно, с ходу подключил к netbeans хорошая документация, в том числе и на русском, понравилась встроенная orm доктрина, но потом возникли сложности с примерами из документации (возможно из за моих кривых рук) и я бросил изучение.

    В итоге пишу на zend (возможно потому что попробовал его первым) продвинулся достаточно далеко, из за того, что почти весь код пишу сам хорошо его понимаю.
    Ответ написан
    Комментировать