Задать вопрос
  • Позднее статическое связывание php: как это работает?

    MegaMufa
    @MegaMufa
    Смотрите. Есть такая простая иерархия классов:
    class A
    {
        public static $text = 'class A';
    
        public function selfTest()
        {
            echo self::$text;
        }
    
        public function staticTest()
        {
            echo static::$text;
        }
    }
    
    class B extends A
    {
        public static $text = 'class B';
    }


    Мы создаем экземпляк субкласа и вызываем методы, определенные в предке.
    $obj = new B();
    $obj->selfTest(); // выведет "class A"
    $obj->staticTest(); // выведет "class B"

    self всегда указывает на тот класс, в котором он написал. Здесь метод описан в классе A, и self указывает на класс A, хоть и вызывается из класса B.
    Значение static вычисляется при вызове. И static указывает на класс объекта в котором произошел вызов. В нашем случае он указывает на B, хотя сам код описан в классе A.

    Зачем это надо? Для того, что бы можно было переопределять статичные члены вашего класса в наследниках и вы могли обращаться к новым значениям из методов, описанных в предке.

    С обычными не статичными членами это и так работает, потому что они собираются, когда вы создаете объект класса. Что бы это работало для статичных методов, надо использовать static
    Ответ написан
    1 комментарий
  • В каких веб приложения можно использовать Sqlite3?

    @deliro
    Когда тебе понадобится другая БД — ты поймёшь. А пока у тебя нет репликаций, хайлоада, БД-специфичных штук вроде JSONB — юзай смело.

    Тут многие ругают sqlite за низкую производительность. Но проблемы производительности у этих товарищей чаще всего в кривой архитектуре. Реальные проблемы — когда у тебя тысячи RPS от клиентов, а не когда твои кривые модели генерируют N+1 запросы, которых тысячи. И постгресы всякие таких товарищей спасают ненадолго. И тюнинг тоже.

    Правда, есть одна неприятная особенность в sqlite, связанная со строками. sqlite не умеет в регистронезависимый поиск.
    Ответ написан
    7 комментариев
  • В каких случаях используются ActiveRecord или Doctrine?

    by25
    @by25
    Веб-разработчик
    ActiveRecord имеет смысл использовать, если ваша модель хорошо ложаться на реляционную структуру данных. Т.е. свойства классов соответствуют полям таблицы.

    Для сложной бизнес логики - лучше доктрина, она маппит данные из таблиц на наши доменные объекты и структура таблиц субд может сильно отличаться от структуры нашей модели. Также доктрина включает много замечательных штук таких как UnitOfWork, EntityManager и кучу других удобных вещей.

    Для большинства сайтов и несложных проектов active record - хороший вариант. Для сложных проектов - Doctrine.

    Про использование orm vs pdo выше ответил OnYourLips
    Ответ написан
    Комментировать
  • Я хочу хорошую библиотеку на PHP для MySQL. Я зажрался, или такое есть и активно используется?

    Acuna
    @Acuna
    Заполнил свой профиль
    Вы не поверите, но существует PDO, это и есть та библиотека, которую Вы и хотите: php.net/manual/ru/intro.pdo.php Умеет даже SSL. Притом абсолютно дефолтная. И не благодарите)
    Ответ написан
    4 комментария
  • Как правильно работать с GIT?

    @dmitryKovalskiy
    программист средней руки
    Если говорить чисто концептуально, то должна быть основная ветка(Release), а от нее делаться бранчи под конкретную задачу. При готовности задачи - слияние с основной веткой. Это один из подходов и далеко не единственный. В вашем случае можно сделать релиз, от нее бранч-тест, и дальше от теста бранчится в задачи. При готовности задачи - вливать в тест, после тестов - релиз. 1 требование - запрет слияний напрямую в релиз мимо тестов.
    Ответ написан
    2 комментария
  • Старт в WordPress?

    hOtRush
    @hOtRush
    замечательной штукой WordPress

    как же вы в этом разочаруетесь)
    Ответ написан
    6 комментариев
  • Старт в WordPress?

    vicodin
    @vicodin
    Имею некоторый опыт
    Просто прочтите wp для профессионалов (2014).
    Лучший старт.
    Ну естественно с проработкой.
    Ответ написан
    Комментировать
  • Как развить программистское мышление?

    Neuroware
    @Neuroware
    Программист в свободное от работы время
    Соглашусь с Spetros, умение гуглить жизненоважный навык в программировании) 99% любых задач в том или ином виде уже решались до вас, по 70% уже есть хорошо расжованное описание, 50% есть еще и инструкции, поэтому если у вас не удается найти решение это либо плохо искали, либо неправильно поставлена задача.
    По части второго в программировании нужно уметь разбивать задачу на части (подзадачи). То есть скажем задача найти подстроку во всех файлах папки, сходу не ясно как можно искать сразу во всех файлах, очевидно нужно искать в каждом по очереди, если файлы мелкие то все нормально, можно считать их целиком и потом спокойно делать в них поиск, но если они весом под 24Гб, в таком случае нужно читать файлы построчно и делать поиск подстроки в каждой отдельной строке и т.д.
    Если "в голове" не получается построить полное решение конкретной подзадачи, нужно разбить ее на функциональные части и каждую из них решать как отдельную подзадачу. Вцелом любой, даже неимоверно сложный продукт с миллионом строк кода это лишь совокупность маленьких фрагментов, каждый из которых можно понять.
    Ответ написан
    1 комментарий
  • Как командно разрабатывать php проект?

    copist
    @copist
    Empower people to give
    Инфраструктура
    * Создайте репозиторий на Bitbucket или GitHub.
    * Создайте себе локально копию репозитория и локально поднимите базу данных с одинаковой структурой
    * Если в базе требуются изменения, создавайте "миграции", которые обновят структуру данных или сами данные.
    * Свои изменения по коду, так же как и миграции, отправляйте в репозиторий

    Ещё есть возможность создания виртуальных серверов для разработки или использование online IDE. Решает кучу проблем, если интернет быстрый.
    * https://compilr.com/ Полноценная среда разработки
    * https://koding.com/ Среда разработки с предустановленным веб-сервером и элементами социальной сети
    * online-php.com Online IDE
    * https://codeanywhere.com/ Среда разработки. Код можно хранить в облаке, а также в Dropbox, Google Drive, FTP, github.
    Другие тулзы для совместной работы в online

    Промежуточные версии
    Если вы географически недалеко друг от друга, то просто периодически показывайте, что у вас получается.
    Если нет, пользуйтесь Skype Shared Screen, Join.me и другие аналогичные продукты, чтобы вместе смотреть и обсуждать голосом. А лучше TeamViewer, чтобы можно было вместе и посмотреть, и поправить.

    Обновление сервера
    Изменения на сервер устанавливайте из того-же репозитория. Не забудьте про миграции. Озаботьтесь вопросами безопасности. Хотя бы так: скрыть файлы .git
    Ответ написан
    Комментировать
  • Какую бесплатную cms/фреймворк использовать для интернет-магазина?

    @GPK1929
    OpenCart- CMS c MVC структурой большое сообщество много бесплатных модулей и тем.
    Ответ написан
    4 комментария
  • Стоит ли пробовать работать удаленно, не имея приличного опыта?

    Atanvar
    @Atanvar
    Frontend developer
    Пробуй, от того что ты попробуешь мир не сломается.
    Ответ написан
    Комментировать
  • Как вы начинаете вёрстку сайта?

    dunmaksim
    @dunmaksim
    Технический писатель
    1. Создаю каталог для проекта
    2. Инициализирую Bower
    3. Устанавливаю нужные пакеты, например, Twitter Bootstrap, Angular, jQuery и т.д.
    4. Ставлю Grunt, плагины для него и т.д.
    5. Запускаю EMACS и создаю index.html
    6. С помощью Emmet создаю шаблон, который уже начинаю заполнять.
    7. В каталоге src создаю папки less, js и т.д.
    8. Попутно пишу задачи для Grunt
    9. Если в выбранном фреймворке не хватает какого-либо класса для стилизации элемента, сначала описываю стили прямо в шаблоне, в свойстве style. Затем при необходимости выношу их оттуда в LESS в виде одного или нескольких классов.
    10. ??????????
    11. PROFIT!!!
    Ответ написан
    15 комментариев
  • Как обрабатывать и отображать собственные данные в CMS?

    afi13
    @afi13
    В Drupal используется концепция сущностей, вы можете объявить собственные сущности с помощью hook_entity_info(), описать поля в таблице, логику поведения и т.д. Вот Пример.
    Ответ написан
    3 комментария
  • Фреймворк или CMS?

    zooks
    @zooks
    Frontend
    Не обязательно через фреймворк - можно использовать CMS, но не Джумлу.
    WordPress, MODX, Drupal - выбирайте в зависимости от задач.
    Ответ написан
    3 комментария
  • Статика VS Singleton?

    @gro
    Основное преимущество объектов, полизморфизм, на:
    function func($obj) {
    $obj->method1();
    $obj->medhod2();
    }

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

    И откуда получен этот объект, через Singleton или нет, много подобных объектов в системе или он один, нам не интересно.
    А со вторым способом мы жестко привязались к классу.
    Ответ написан
    6 комментариев
  • Статика VS Singleton?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    Если вам нужна кучка функций, хоть и под общей эгидой — статика.
    Если вам нужен объект — одиночка.

    Важная между ними разница — вызов конструктора и деструктора. У синглтона и тот и другой вызываются автоматически.
    Тогда как в куче статических методов вам придётся в каждом методе проверять, был ли вызван конструктор для достижения того же эффекта. Да, от этого можно избавиться, реализовав __CallStatic и приняв правила именования методов так, чтобы в чистом виде они никогда не вызывались, но не кажется ли это вам костылём?
    Ответ написан
    3 комментария