Ответы пользователя по тегу PHP
  • Как понять свой уровень знания какой либо технологии, и надо ли знать ее на 100%?

    riky
    @riky
    Laravel
    заучивать не нужно, ты же не в школе к экзаменам готовишься.
    тут дело точно не в памяти, а в то чтобы в целом понимать суть технологии и знать как ее применить.

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

    поэтому стремись не к тому чтобы запомнить все html теги, все css свойства, а к тому чтобы знать что для решения той или иной задачи есть какой то тег/свойство, и уметь его быстро найти, вот для этого шпаргалка и нужна. можно даже их распечатывать, если тебе так удобно, но в электронном виде удобно делать поиск.
    Ответ написан
    Комментировать
  • Есть ли готовая обертка над Imagick/GD с богатым API?

    riky
    @riky
    Laravel
    одна из мощных универсальных оберток работает и с gd и imagick

    imagine
    Ответ написан
    Комментировать
  • Как отдать изображение из скрипта, не зная его тип?

    riky
    @riky
    Laravel
    даже если поставить всем image/jpeg то думаю все браузеры и так определят правильный тип по содержимому и корректно отобразят.
    Ответ написан
    Комментировать
  • Почему замена (удаление) строки с помощью str_replace не работает?

    riky
    @riky
    Laravel
    порядок параметров перепутали php.net/manual/ru/function.str-replace.php
    Ответ написан
    Комментировать
  • А как выглядит ваш MVC?

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

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

    видно что ваш опыт пока недостаточен чтобы проектировать свой "идеальный фреймворк" раз встают вопросы "что еще" да и по комментам видно, а это значит что рефйакторить придется еще не раз, и чем дальше в лес, тем больше времени.

    я понимаю что сейчас вы уже никуда не отступите и будете пилить дальше свой фрейм не смотря на все ответы. просто через пару лет настанет час икс, и вы крепко задумаетесь
    "в начале все было просто, новый функционал добавлялся легко и давал хороший прогресс, но потом каждый раз требовались все более крупные и крупные модули и писать их приходилось самому. то что другие с фреймворками делают в 2 строчки, мне приходится делать днями (проектировать, писать, отлаживать, тестировать, править баги). туда ли я иду?"

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

    если уж собрались пилить свой, то порекомендую хотя бы начать использовать готовые качественные компонеты. когда лет 5 назад пилил свой фреймворк сначала писал все с нуля потом начал внедрять симфони компоненты symfony.com/components а потом и вовсе на симфони фулл стек перешел.
    там их много, хватит на долго, рекомендую для начала посмотреть эти:
    HttpFoundation
    HttpKernel
    DependencyInjection <-- очень очень маст хэв сразу с этим разобраться, жаль я поздно начал применять
    Form
    Routing
    и Twig (шаблонизатор, он отдельно идет)

    во вторую очередь
    EventDispatcher
    Console
    Config

    также я в свой фреймворк вместо с компонентами симфони сразу же внедрил и Doctrine. Может показаться сложноватой с ходу, но зато когда научитесь ее готовить получится быстро и удобно. Это уже вариант на период когда "надоело писать много кода и долго отлаживать его, хочется быстро решать задачи". Хотя по началу конечно кажется что написать sql запросец проще.

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

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

    сорри за много букв и чрезмерный "позитив" просто сам когда то переболел.
    Ответ написан
    3 комментария
  • Можно ли получить public переменную не инициализируя сам класс?

    riky
    @riky
    Laravel
    можно через рефлексию,
    php.net/manual/ru/reflectionproperty.getvalue.php
    надо ли объяснять что это не тру ?
    Ответ написан
    Комментировать
  • Есть ли в PHP аналог petapoco из .NET / c#?

    riky
    @riky
    Laravel
    даже в PDO можно так делать.
    php.net/manual/ru/pdostatement.fetchobject.php

    пример кода примерно как здесь
    php.net/manual/ru/pdostatement.fetch.php

    либо Doctrine ORM, там raw sql тоже можно маппить, правда необходимость маппить именно рав бывает в 0,01% случаев
    Ответ написан
    Комментировать
  • Записывать сумму в базу, или считать ее при каждом запросе?

    riky
    @riky
    Laravel
    Если вас все остальное устраивает то просто заверните расчёт суммы в функцию или метод.
    getordersum(order)
    И везде вызывайте её.
    Даже если потом сделаете отдельное поле, то просто функцию поменять на вывод этого поля.
    Главное избежать дублирования кода.

    Из минусов для себя вижу только то что сложно будет делать акции скидки, например купи 3 бутылки по цене двух. Либо скидки за покупку двух разных товаров. Либо личная скидка клиенту. Хотя можно потом просто добавить поле размер скидки. И вычитать его из суммы. Если в функцию будет передаваться весь объект заказа, то изменить логику будет просто в одном месте
    Ответ написан
    Комментировать
  • Как реализовать таймер на php?

    riky
    @riky
    Laravel
    $startTime = time();
    $arr = [];
    
    // ......
    
    while(1) { // main loop
        //......
    
        if (time() > $startTime + 24*60*60) {
            $startTime = time();
            $arr = [];
        }
    }
    Ответ написан
    Комментировать
  • Стоит ли использовать фреймворки для небольших проектов?

    riky
    @riky
    Laravel
    только для простых лучше уж не "yii2 или laravel" а микрофреймворки типа silex/slim. я сам люблю симфони, но для мелочи использую их. иначе мелкий проектик получается что весит более 100мб. и 90% их возможностей не используется.

    UPD. вспомнил еще хороший вариант Bolt CMS. она как раз на silex сделана. есть twig, все конфиги в yml файлах. довольно легковесная и в то же время функциональная. после нее на вордпресс смотреть тошно.
    Ответ написан
    Комментировать
  • Как сделать простейший скриптовый язык для пользователей?

    riky
    @riky
    Laravel
    когда свой интерпретатор писал, брал за основу
    symfony expression language плюс твиг. написаны они по-момему одним человеком, архитектура очень похожая.
    но у меня задача была очень специфическая, там больше вычисления типа екселя, а не столько шаблонизация.
    вам бы я рекомендовал попробовать использовать твиг без переделки.
    Ответ написан
    Комментировать
  • Ссылки в PHP (&$var1), переменные переменых ($$var2) и их практическое применение?

    riky
    @riky
    Laravel
    &$var1 - часто используется для передачи значения в функцию по ссылке, чтобы можно было изменить значение внутри и снаружи тоже изменилось. часто используется и в стандартных функциях например preg_match 3ий параметр.

    $$var2 - никогда, очень злая магия.
    Ответ написан
    Комментировать
  • Что входит в мини фреймворк php?

    riky
    @riky
    Laravel
    возьмите любой микрофреймворк типа slim или silex установите и посмотрите как там делается.
    даже если вы не собираетесь их использовать, хотя бы посмотреть интерфейсы и функционал.
    для БД нужно искать отдельную библиотеку.
    Ответ написан
    Комментировать
  • Как понять этот отрывок кода php?

    riky
    @riky
    Laravel
    в файле по пути $routesPath
    будет код типа
    <?php
    return array(
       'abc' => 123 ...
    );

    в $this->routes будет помещен этот массив
    Ответ написан
    Комментировать
  • Как выбрать первое вхождение регулярного выражения?

    riky
    @riky
    Laravel
    preg_match вернет именно первое. (в отличие от preg_match_all)
    Ответ написан
    4 комментария
  • Что стоит изменить в классе PHP для работы с файлами?

    riky
    @riky
    Laravel
    1) режут глаз нащвания методов с большой буквы.
    2) запись в файл во всех случаях проще было сделать file_put_contents, в том числе для дозаписи есть флаг FILE_APPEND
    3) по сути класс - набор отдельных функций, можно было бы даже все методы статическими сделать.
    4) но в целом смысла от этих функций мало, единственное что идет проверка существования файлов, но в большинстве случаев в реальном приложении return false далеко не всегда устроит, чаще наобоорт может быть исключение лучше кинуть, но от задачи конечно зависит. в итоге у вас все равно часто будет в коде проверка результата на false.

    посмотрите лучше Symfony Finder, как пример полезных функций, как пример ООП класса, как пример как можно использовать цепочки вызовов и тд. https://symfony.com/doc/current/components/finder.html
    Ответ написан
    Комментировать
  • Как выполнить транслитерацию всего столбца в базе с большим количеством записей?

    riky
    @riky
    Laravel
    написать php скрипт который достает записи транслитит и обновляет
    или можно средствами mysql, с помощью mysql функций, например так www.sql.ru/forum/1090122/translit-funkciey
    там пример для select, но легко переделать под Update
    Ответ написан
    1 комментарий
  • Как в Slim Framework организовать автозагрузку классов?

    riky
    @riky
    Laravel
    по идее автолоад должен быть через composer.
    см composer autoload
    Ответ написан