Задать вопрос
  • Для чего нужна ORM?

    Вы не путаете ORM с DBAL? ORM это не технология замены SELECT * FROM goods WHERE cost < 100.00 на $db->select()->from('goods')->where('cost < 100.00'). ORM это способ задания связи объектов и РСУБД. По сути позволяет абстрагироваться от способа хранения объектов вообще, с лёгкостью переходя от SQL к NoSQL, memcache, файлам или REST/RPC API на удалённом сервере, оперируя на уровне модели (если говорить о MVC и т. п.) простыми plain old objects, а их персистентность отдать контроллеру. Не $db->select()->from('goods'),, не mysql_query('SELECT * FROM goods'), а $goodsRepository->findAll(), а уж будет репозиторий формировать SQL запрос, читать файлы или память, а может стучаться на Гугл и парсить его вывод — его, репозитория, личное дело (а также разработчика(ов), отвечающих за подсистему хранения).

    Кроме того ORM, как правило не исключает обращение к БД на уровне произвольных SQL запросов, оно лишь преобразуют результаты этих запросов в объекты модели предметной области (и наоборот), которые ничего не знают (в идеале) о таблицах, WHERE, HAVING и т. п.

    ORM это не только инструмент архитектурного разделения областей ответственности объектов и классов приложения, а также инструмент облегчения разделения труда разработчиков: кто хорошо шарит в SQL вообще и особенностях конкретного движка в частности — работает по «ту сторону» ORM, оптимизирует его как хочет, может нормализовывать и денормализовывать, например; кто хорошо разбирается в дебетах и кредитах — работает с plain old objects в терминах предметной области и может вообще ничего не зная об SQL, ему лишь нужно знать, что он всегда может получить объект или их коллекцию обратившись к методам вроде findById() или findAll() и сохранить результат работы методом save() или flush().
    Ответ написан
    3 комментария
  • Upwork и налоги?

    opium
    @opium
    Просто люблю качественно работать
    так как вы работаете в черную полностью не легально и причем с полным палевом для налоговой и полиции, к вам уплата ндс не относится.
    Ответ написан
    Комментировать
  • Что почитать об архитектуре приложений и фреймворков на php?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    В целом сразу вас расстрою, то что вы хотите нельзя "разобрать" за пару месяцев. На это уйдет пару тройку лет. И книги которые стоит по этой теме прочитать имеет смысл перечитывать. Ну и практика практика практика.

    Так же хочу заметить что "архитектура" это не что-то эдакое, а общее понимание команды разработчиков о том как функционирует приложение. Если этого общего понимания нет - у вас нет архитектуры. У многих разработчиков понимание пропадает уже через пару месяце стихийной разработки. Так что помимо архитектуры важно еще и процессы/методологии разработки подтянуть.

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

    но совершенно не имею представления о правильной архитектуре приложений на php


    "Правильно" не бывает, все зависит от задачи. "Правильная" архитектура является:

    - понятной - то есть можно быстро разобраться. Это как читабельность кода (читать совершенный код Макконела) так и в принципе декомпозиция системы, разделение ответственности и т.д. (микросервисы, гексагональная архитектура). Тут можно посоветовать почитать Эрика Эванса.
    - удобной в изменениях (продумать все нереально, а сталобыть проще сделать так что бы адаптироваться под изменения в требованиях можно было эффективнее).
    - Тестируемой - то есть вы можете проверить работоспособность системы на различных уровнях. Тут стоит смотреть в сторону TDD или практик с той же идеей (сначала формулируем как работает и как мы это проверим а потом уже делаем).

    Вот и все. Далее уже есть принципы SOLID (читать Роберта Мартина), GRASP (Крэйг Ларман), GoF (лучше тут почитать head first design patterns или даже начать с Мэта Зандстры, у него помимо паттернов еще про процессы мельком рассказано).

    Ну и смысла в этом всем нет если вы еще до конца не осознали что есть инкапсуляция и полиморфизм. Многие могут рассказать что значат эти термины, но на практике эти знания они не могут применить (чаще всего страдает инкапсуляция)

    или написании чего-то своего с нуля на чистом php


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

    идеально было бы вообще подробно расписанное сравнение внутреннего устройства нескольких фреймворков


    Берете Symfony или Zend и вперед. Все остальные фреймворки "проще". То есть скрывают больше от разработчика. После них уже можно брать что угодно.

    p.s. еще прочитайте тут: www.phptherightway.com
    Ответ написан
    12 комментариев
  • Symfony2 - Как правильно создать свой bundle?

    riky
    @riky
    Laravel
    сначала генерируешь новый дефолтный бандл.
    потом сам добавляешь туда что тебе нужно.

    скрипт сгенерит стандартную структуру и пропишет бандл в AppKernel и routes.yml - все

    идея в том что ты создаешь бандл и начинаешь работать в нем, нет инструментов для авто перемещения из бандла в бандл.
    Ответ написан
  • Как в стиле Golang, забрать JSON с ajax.googleapis.com?

    mututunus
    @mututunus
    Backend developer (Python, Golang)
    Все работает
    url := "http://ajax.googleapis.com/ajax/services/search/images?v=1.0&imgsz=large&rsz=8&q="
    
    response, err := http.Get(url)
    if err != nil {
    	log.Fatal(err)
    }
    
    fmt.Println(response.StatusCode)
    
    defer response.Body.Close()
    data, err := ioutil.ReadAll(response.Body)
    if err != nil {
    	log.Fatal(err)
    }
    
    fmt.Println(string(data))
    Ответ написан
    1 комментарий
  • Перестал работать полноценно wordpress?

    webirus
    @webirus
    Тыжверстальщик! Наверстай мне упущенное...
    Из описанного понятно только то, что перенесли вы его криво, нужно было почитать документацию для начала.
    А по делу скажу, что опять же документация вам в помощь, чтобы хотя бы поставить правильные права на файлы и папки.
    Ответ написан
    3 комментария
  • Насколько код ООП и что бы вы посоветовали по его улучшению?

    @dk-web
    Привет, коллега! Сейчас тебе посыпется, надеюсь... Мой совет - не бойся и прислушайся... я сначала не воспринимал все эти новшества, понадобилось время.
    Но на правах первого ответа... если уж ООП стал постигать - сразу внедряй PDO и подготовленные запросы...
    - уходи с mysql_query,,,
    mysql_query("SELECT 'code' FROM admin_authorization WHERE code='".$user_code."'");
    вот за это точно по голове "получишь")...
    Ответ написан
  • Как в GO обыграть момент с созданием глобальной константы []string / map[string]string?

    bitver
    @bitver
    Slice и map по определению динамические, т.е. работают с кучей, если их не оптимизирует компилятор. Константами они быть не могут, примерно такая идеология у создателей.
    А создавать вы можете и без init() просто в своём коде вместо const используйте var
    P.S. Чтобы вместо slice использовать обычный массив (скорость наше всё), то пишите [...]string {"param1", "param2"}
    Ответ написан
    1 комментарий