Задать вопрос
  • Стоит ли новичку начинать с фреймворка или лучше учиться на чистом php?

    rpsv
    @rpsv
    делай либо хорошо, либо никак
    Начинайте с фреймворком.
    При чем на старте, лучше написать какое-нибудь простенькое hello world на нескольких фреймворках, и на чем будет вам проще и удобнее, на том и пишите.
    Писать в самом начале с нуля не имеет смысла, т.к. вы еще не знаете как нужно писать правильно, а фреймворки в этом плане следуют паттернам и вам придется писать правильно.
    Конечно можно наговнокодить везде, но фреймворки будут держать вас более менее в рамках)))
    Ответ написан
    21 комментарий
  • Как запустить крон в laravel?

    Sanasol
    @Sanasol Куратор тега Laravel
    нельзя просто так взять и загуглить ошибку
    https://laravel.com/docs/5.6/scheduling
    Посмотреть документацию? Да не, бред какой-то
    Ответ написан
    Комментировать
  • Как изменить значения одного столбца при добавлении другого?

    @vanillathunder
    Создаёте наблюдатель
    class UserObserver
    {
      /**
       * Прослушивание события обновление вопроса
       *
       * @param  Question $question
       * @return void
       */
      public function updating(Question $question)
      {
           if ($question->body != $question->getOriginal('body ')) {
               $question->status = 'опубликован';
            }
      }
    }
    Ответ написан
    Комментировать
  • Можно ли писать форумы на Laravel?

    @tester_toster
    Смотря, что вам нужно.
    Если нужен быстрый готовый форум с типичным функционалом, phpbb или любой другой скрипт - ваш выбор. Если функционал будет нестандартный, важна скорость, не нужно лишнего, минимум кода, в общем, не нужен монстр - то можно написать и самому на laravel, любом другом фреймворке, или как иногда делают - на наборе компонентов (fastroute, request, di, template, qb ) добавляя по потребностям новые.
    Плюсы laravel: Авторизация есть из коробки, qb, di, blade.
    Добавить пару сущностей, контроллеров и самый простой форум готов. При необходимости дописывать нужный функционал будет легче, и быстрее, так как вникать в движок не придется. Скорость разработки не будет уступать написанию модификаций готовых движков, ибо не изучая движок, находя ответы в статьях "simple from, how make..." - рано или поздно поймете, сколько шлака наделали, и придется все переписывать, чтобы было правильно. Некоторые умудряются менять код движка, что замораживает апдейты, при этом некоторый код сам просит так, чтобы изменили его ядро, так как по другому определенного функционала не добиться, особенно этим грешит старый код.
    С теми, кто говорит про велосипед - не полностью согласен , так как это зависит от требуемого функционала. За последние пару лет правил код за "гуру невелосипедостроения", когда к обычной cms или магазину требовался нетипичный функционал - если новый код был написан как правильное расширение - уже было хорошо, по самому коду было видно - что кроме "how to make simple extension" люди не читали, так как для того, чтобы изучить достаточно большое ядро нужна даже не пара дней, а после изучения езе нужно, чтобы все и в голове отложилось.
    Также нужно учитывать, что сама модульность готовых движков будет отыгрываться либо на скорости, либо на возможностях модификации, либо на сложности, а может и на всем сразу.
    Когда создают что-то сложное на wp - охото убивать, да движок рабочий, миллионы сайтов, да, можно прикрутить шаблонизатор, laravel и.т.д., но зачем? Проще написать к laravel код для вывода статей.
    Работаю над сайтом с 8млн просмотров в день. Написан на dle - это самая распространенная в рунете cms, причем платная, но кто видел код - не спит по ночам. Также и начиналось - взяли готовое решение, раз доработка, ..., n доработка, а потом смотришь - пи**ец. Функционал уже не лезет, скорости не хватает, ядро все переписано. В итоге вся пользовательская часть переписана на фреймворк с горем пополам, ибо готовое решение положило свои особенности на архитектуру проекта. От решения осталась только админка, в которой мало чего осталось, не переписана просто по тому, что нет времени.
    Но если раньше борясь с архитектурой коробочного решения на задачу уходил день - теперь тратится час. Хотя тянули с переносом до последнего, год точно уже был напряг выдумывали костыли и.т.д.. Очень много денег бы было сэкономлено если бы перевели на фреймворк еще год назад, не говоря уже о том, что если бы при старте проекта начали сразу писать на фреймворке, да даже на голом php, так как при разработке было понятно, что бложик - 1% от функционала.
    Хотя своих решений тоже стоит избегать, был проект - написан программистом с нуля, весь код написан им, но опыта не хватило - архитектуру закосячил, ну там жесть была - ни автозагрузки классов, ни нэймспейсов, хотел модульность как в cms. Одному такое не написать, по крайней мере за стандартный срок проекта. В итоге - переписан на фреймворк. Взял бы готовые компоненты + типичную архитектуру mvc - не было бы проблем.
    Мой совет: смотрите по потребностям - времени - деньгам.
    Ответ написан
    1 комментарий
  • Пересаживаться ли на linux или достаточно установить docker, оставаясь на винде?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    Просто заставил себя перейти на Убунту

    Первый раз на неделю хватило - вернулся
    Второй раз продолжается уже год и уже как 7 месяцев я не видел меню Пуск совсем ;) сейчас работаю на Линуксе и Mac OS - доволен как слон

    Избавился от всяких фотошопов, игрушек и извращения с разработкой
    Ответ написан
    Комментировать
  • Как настроить ssl на устаревшей версии PHP?

    А зачем Вам ssl в php? Чего б не прикрутить ssl выше, например в nginx?
    Оффтоп
    Залез HEX редактором вписал руками нужный цифирь - всё равно упало.
    Если Вам в паспорте, вместо фио, написать "Иванов Иван Иваныч" - Вы им станете?
    Ответ написан
    Комментировать
  • Как осуществляется шифрование телеграм?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    1. Алгоритмов не тысячи. Но вот количество вариантов ключей - неисчислимо.
    Телеграм использует симметричное 256-битное шифрование AES и шифрование RSA 2048. Обмен ключей идет по методу Диффи-Хеллмана. Также почитайте технический FAQ
    2. Шифруются не все сообщения и чаты, а только в том случае, если вы создаете секретный чат.

    3. Почитайте банально википедию - что такое открытый ключ.

    Вкратце.

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

    2. Вася передает Ане публичный ключ

    3. Аня шифрует им сообщение и передает Васе

    4. Вася расшифровывает.

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

    В идеале, временная пара ключей может генериться отдельно для каждого чата/сессии - так работает https.

    P.S. Полезные ссылки:
    https://medium.com/@tglive/stop-reading-gizmodo-7f...
    Ответ написан
    2 комментария
  • LARAVEL Trying to get property of non-object как исправить?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    LARAVEL Trying to get property of non-object как исправить?


    Если сообщение "нельзя обратиться к полю того, что не является объектом", то исправление простое:
    Надо попытаться получить поле у объекта, а не у чего-то другого.

    Можно не благодарить. Всегда рад помочь.
    Ответ написан
    2 комментария
  • Какой курс выбрать?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Никакой. Все курсы рассчитаны на стажёров и джуниоров. Только практика в команде толковых специалистов.

    Ну и книги, для углубления теоретических знаний и совершенствования методологии разработки.
    Ответ написан
    8 комментариев
  • Как реализовать SSO (единый вход) на Laravel?

    KazeZlat
    @KazeZlat
    Погромист-затейник
    Можно реализовать свой OAuth сервер, к которому разные приложения будут обращаться.
    Ответ написан
    4 комментария
  • Почему не работает метод save() в связанных моделей?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Потому что argument 1 to Illuminate\Database\Eloquent\Realtions\BelongsToMany::save() must be an instance of Illuminate\Database\Eloquent\Model, but an array given.

    Всегда рад помочь, не благодари.
    Ответ написан
    Комментировать
  • Составили требований для верстальщика, не перегнули ли палку?

    sim3x
    @sim3x
    1.1. Структура директорий
    mkdir -p  html/{css/fonts,scss/util,js/vendor,i/icons}
    tree html
    spoiler
    html
    ├── css
    │   └── fonts
    ├── i
    │   └── icons
    ├── js
    │   └── vendor
    └── scss
        └── util
    .

    1.2.1. Breakpoints
    Достаточно сказать, что все переменные храним в отдельном файле

    20 Для ID - camelCase. ID нам нужен для JS
    Неправильно. Нужно использовать классы. Если требуется отделить классы для стайлинга и для жс - делаем префикс

    23 Используем Автопрефиксер, он расставит префиксы за нас. Используем автоматизацию — ставим его как пакет и подключаем в процесс обработки стилей. Не используем автоматизацию — есть он-лайн вариант
    Делаете верстку с флексом = не используете старые браузеры = не требуются префиксы = не требуется аутопрефиксер
    Не делать автоматизацию - такого пункта даже в теории быть не может

    2. Используемые решения
    Смешивать общий гайд и стайлгайд - не нужно
    Стайлгайд вообще нужно готовить отдельно для каждого проекта

    Про бем уже все сказали
    Ответ написан
    18 комментариев
  • Как относится Laravel к Symfony?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Почему в Laravel много компонентов из Symfony? Laravel это форк Symfony?
    Я бы переформулировал немного. В Laravel много компонентов, авторами которых являются авторы Symfony. Видимо, так сложилось, что эти компоненты обладают достаточно высоким качеством или иными положительными качествами, которые разработчики Laravel сочли нужными/важными.

    Laravel это форк Symfony?
    Нет.

    Есть стандартный (аки стандарт) формат переносимого пакета. Такой пакет может использоваться практически в любом приложении (PHP-приложении, в данном случае). А Symfony - фреймворк модульный (а с версии 4 - ещё более модульный). В результате чего, симфони порвали на лоскуты разобрали на пакеты многие проекты/разработчики. Вот собственно, и результат...
    Ответ написан
    6 комментариев
  • Структура Laravel проекта .. Куда ложить код?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Рекомендую прочитать ВСЮ документацию. Вопросов станет гораздо меньше. Например, вот тут всё разъяснено.
    Ответ написан
    2 комментария
  • Объясните что такое полиморфизм простыми словами ?

    Deerenaros
    @Deerenaros
    Программист, математик, задрот и даже чуть инженер
    Да ладно, парни. Ну хватит уже, к чему такие сложности? Берём и читаем. Вообще совсем не обязательно читать про архитектуру и абстракции именно по своему языку, хотя javascript в этом плане родился уродом.

    Ок. Полиморфизм ни в коем случае нельзя рассматривать отдельно от других фундаментальных понятий - абстракция, инкапсуляция и наследование. Объект и подобные прилагаются из аксиом (хотя это-то тоже аксиомы).

    Собственно, представим себе рядом стакан, кружку, чайник, кофемашину, велосипед и скейт. Что между ними всеми общего? Ну как минимум то, что они есть. То есть это - объекты, которые были созданы. Но как они были созданы? Скорее всего на заводе производителя по чертежам. Ок, чертежём назовём конструктор. Ну а класс? А что это такое? А его нет в нашей вселенной - эта сущность есть абстракция, что живёт лишь в наших мыслях. В реальном мире её нет и никогда не будет, такова уж физика - ей по барабану, что птицы и млекопитающие имеют дальних родственников - она лишь обеспечивает возможность естесственного отбора. А уж родственников друг другу находим мы, люди.

    С объектами и классами разобрались, а что же там с нашими стаканами и велосипедами. Мы уже поняли, что всё это объект, то есть грубо можно все объекты наследовать от какого-нибудь суперпредка, суперкласса, что и реализовано в некоторых языках. Но что другого общего между скейтом и стаканом, например? Конечно, можно углубляться и считать, что они все из молекул, и они все из твёрдых веществ. Однако это всё бред и СПГС, так что ответ прост - да ничего. То есть это совершенно разные объекты с совершенно разным функционалом. Более того - естесственно компьютерные модели и иерархии будут сильно отличатся от физик и химий. И это нормально, вопрос об адекватностях моделей ставиться лишь когда модель неадекватна, а до тех пор пилить можно что угодно, лишь бы работало.

    Вот. У нас есть супер-предок Object, от которого дефолтно наследуются все объекты. Допустим, то что объекты состоят из атомов и есть то, что наследуют все объекты. Но все дополнения и правки - полиморфизм. Так, из атомов мы слепили колёса и приделали на доску - ок, это скейт. На него можно встать и катиться, а сильно извернувшись и полетать в трёх метрах над землёй, прямо таки излучая своё яркое эго. В то время как стакан - это мы слепили из атомов плотную ёмкость, из которой вода не выливается под действием силы тяжести. И прямое применение стакана - налив воды опрокинуть его над ртом, чтобы вода вытекла прямо в желудок. Так делают настоящие пацаны, не заботясь об икоте или страхе утонуть, так что вот - полиморфизм.

    Однако что с остальным? У нас ещё абстракция, инкапсуляция и наследование. Ок, начнём с наследования, так оно наиболее близко. Вот что у нас общего между стаканом и кружкой? Ну в оба можно налить воду, но у кружки есть ручка чтобы держаться. То есть можно придумать некий общий класс - ёмкость. Однако что это за класс? Можно например за этот класс взять стакан, тогда все ёмкости по дефолту стаканы, а всё остальное - видоизменённые стаканы. Но кому-то больше нравяться кувшины, например некоторые чики насят их на голове, считая что это удобно. Ну и пусть носят, но как-то же решить надо, что главнее и идеальнее. Так вот - недостяжимый идеал и есть главный - это называется абстрактный класс. То есть ёмкость, что невозможно создать, для которого нет полного чертежа. А все чертежи, что дополнили до полного - есть наследованные классы от класса ёмкость.

    Тут мы подошли к абстракции. Вот такое иерархическое наследование приводит нас к, возможно главной, идее ООП. Вот мы взяли и выделили всё, куда можно налить воду в отдельный класс, нарисовали общий чертёж, но специально не доделали его, оставив зазор для будущих творцов, и назвали чертёж - ёмкость. Тысячи лет изобретатили всех миров создают свои ёмкости, одна лучше другой. Для разных людей - по разному, конечно. Но каждый раз группировать молекулы стекла определённым образом - непростая задача. Поэтому ремесленники пошли на хитрость, они создали тайный совет ремесленников мира и решили делиться друг с другом своими наработками. То есть создавать мелкие чертежи и объявлять классом, например, извлистой ручки в форме ленты Мёбиуса, например. Возможно такая ручка удобно только инопланетным существам, но чертёж создан и к нему можно ссылаться при создании своего чертежа. Таким образом мы абстрагируемся от низкоуровневой задачи "формирования ёмкостей посредством перемещения молекул" к "конструированию ёмкости посредством совмещения деталей, элементов". Это и есть абстракция.

    Но мы подошли к последнему пункту - инкапсуляция. Она неразрывна с абстракцией, и по сути благодаря ей она и работает. Инкапсуляция - это своеборазный клей (или синяя изолента), которым склеивают разные чертежи в один. То есть совмещение деталей для создания своей - это и есть инкапсуляция. Причём при совмещении мы можем не описывать детали этого совмещения (то есть члены класса могут быть приватными), таким образом помогая абстрагироваться тем, кто этот чертёж использует. Вот посмотрим на чайник - что это такое? Это стакан (или кружка) к которому снизу (а может внутри по середине?) приклеен нагревательный элемент. Пустив по нему ток, согласно инкапсулированному в нагревательный элемент закону Ома, будет выделяться тепло и нагреваться вода. А кофемашина? Это куда более сложное устройство, с множеством насосов, ёмкостей, шлюзов, измельчителей и чайников. И всё склееное клеем. А может синей изолентой. Это снова инкапсуляция.

    Таким образом, абстракция невозможна без инкапсуляции и наследовании, как невозможен полиморфизм без, собственно, наследования. Ну а полиморфизм невозможен ещё и без инкапсуляции, которая банально бесполезна без наследования и полиморфизма. Вот такие тут треугольники с пирогами. Жаль только про пирог наврали. И про день рожденье.
    Ответ написан
    3 комментария
  • Как изменить внешний пакет в Laravel?

    @D3lphi
    Вообще, то что вы хотите сделать противоречит принципу открытости-закрытости (SOLID). Он говорит о том, что код должен быть закрыт для модификации и открыт для расширения.
    В связи с этим вопрос: "Оно вам надо?". Подумайте, может проблему можно решить, наследовавшись от этого класса?

    Ну или даже как скопировать полностью пакет в App/ и подключить его? Laravel 5.2

    Плохая идея. В результате, все пакеты, от которых зависит этот пакет нужно будет держать под одной версией. Ибо, если что-то изменится после обновления зависимостей, пакет с админкой может перестать правильно работать. Да и неудобно это.
    Ответ написан
    Комментировать
  • Почему view не видит значения переменной?

    amelihovv
    @amelihovv
    Фулстек веб разработчик
    Вы пишете
    return view('admin.posts.createpost')->withPost($category);

    что равносильно
    return view('admin.posts.createpost', [
      'post' => $category,
    ]);

    то есть во view переменная $category будет под именем $post
    Делайте так
    return view('admin.posts.createpost', [
      'category' => $category,
    ]);

    или так
    return view('admin.posts.createpost', compact('category')]);

    или так
    return view('admin.posts.createpost')->withCategory($category);
    Ответ написан
    Комментировать
  • Как использовать разные контроллеры в зависимости от параметра маршрута?

    @Kostik_1993
    Web Developer
    Нужно указывать роуты в порядке от жестких к гибким, а не наоборот
    Route::get('/{lang}/{unit}/contact', [
       'as' => 'contact', 'uses' => 'ContactController@show'
    ]);
    Route::get('/{lang}/{unit}/{slug}', [
      'as' => 'article', 'uses' => 'ArticlesController@show'
    ]);
    Ответ написан
    Комментировать
  • Почему в Laravel файлы в Listeners "безумно" кэшируются?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    Потому что он в очереди отрабатывает, однако. А очереди могут работать в режиме демона, загружаясь один раз. Так что поменяли код — попробуйте перезапускать слушателя/воркера.
    Ответ написан
    1 комментарий