• Как корректно осуществить замену в preg_replace в моем случае?

    php666
    @php666
    PHP-макака
    html_entity_decode
    прежде, чем что-то писать, надо включать голову.
    https://www.php.net/html_entity_decode
    Какое отношение HTML имеет к HTTP?

    Далее по коду ничего не ясно. Всё очень усложнено. Какие-то is_string, is_numeric.... зачем все это?
    Вот я описывал как сделать элементарные роуты тыц. Для того, что бы поймать имена параметров несколько строк кода
    foreach ($routes as $map)
    {
        if (preg_match($map['pattern'], $url_path, $matches))
        {
            // Выталкиваем первый элемент - он содержит всю строку URI запроса
            // и в массиве $params он не нужен.
            array_shift($matches);
    
            // Формируем массив $params с теми названиями ключей переменных,
            // которые мы указали в $routes
            foreach ($matches as $index => $value)
            {
                $params[$map['aliases'][$index]] = $value;
            }
            break;
        }
    }
    Ответ написан
    Комментировать
  • Стоит ли создавать сайт-портфолио на GitHub Pages?

    php666
    @php666
    PHP-макака
    серьезный сайт на гитхабе
    это как? гитхаб давно хостингом стал?
    считать целью показ сайта в резюме
    по своему опыту скажу так - туда вообще никто не смотрит, хотя ссылку на свой гитхаб указывал как минимум три раза при поиске работы. либо резюме от hh.ru виной - ссылки в самом низу, либо всем плевать.

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

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

    php666
    @php666
    PHP-макака
    Я просто расскажу. Есть у меня знакомый, он до 35 лет своей жизни, примерно, работал в 2 автобусных остановках от своего места жительства в каком-то околоайтишном отделе районной администрации. Назовем знакомого, допустим, Петей. Пока Василий Берестов каждый день тратил на дорогу по 3-3.5 часа, работая в Москве веб-разработчиком, Петя спокойно сидел на своем месте. Получал санаторно-курортные в виде таких сумм, что Василий Берестов офигевал. У Василий Берестов за 6 лет пробег автомобиля составил примерно 120 000 км, у Пети - 6000. Еще Петя научился барыжить списанной аппаратурой, а Василий Берестов может только код украсть, который за даром никому не нужен. Петя лет 10 сидел на пригретом месте, со здоровыми нервами, а Василий Берестов сменил за это время кучу мест, где "модно и молодежно", но по факту - где невыносимо и бесперспективно. Но это лишь вступление...

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

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

    кумовство
    если ты часть этого, что в этом плохого?

    низкие зарплаты
    высокие зарплаты по IT-сфере в стране платят единичные компании.
    Ответ написан
    4 комментария
  • Где посмотреть\почитать нормальные уроки по ООП в PHP?

    php666
    @php666
    PHP-макака
    Надо не уроки смотреть всяких идиотов, а читать книги людей, чье мнение признано сообществом и которые написали книги.
    Гради Буч - для освоение сути ООП
    Мартин Фаулер - про архитектуру, про CRUD, про доменные объекты. Одной этой книги достаточно, что бы прокачать себя так, что ни один видеокурс в жизни не сделает.

    Иначе твои познания будут соответствовать уровню этих уроков, которые создаются лишь с целью срубить с лохов бабла.
    Ответ написан
    15 комментариев
  • Почему не работает реклама в Яндекс.Директ?

    php666
    @php666
    PHP-макака
    фиолетовые кнопки ужасно бросаются в глаза и раздражают
    остальные фиолетовые мотивы тоже
    Ответ написан
    Комментировать
  • По вашему опыту - поможет ли от выгорания смена работы?

    php666
    @php666
    PHP-макака
    Моя статья - https://ebanoe.it/2019/07/24/burnout-3/
    еще на тему https://ebanoe.it/2019/06/04/burnout/
    там много комментов аля "утренник в детском саду", но суть во многих ясна становится:
    Вообще делаю вывод, что интеллектуальный труд не терпит «долгих лет работы». Типа как раньше, люди работали всю жизнь на одном предприятии. Надо или как-то со временем комбинировать что-то с чем-то или менять сферу. Ну реально это же упороться можно всю жизнь учить модные либы и фреймворки, а в конце что? К чему шел? И дело тут как мне кажется не в выгорании как таковом. А больше дело в том, что мозг постоянно стремится открывать для себя что-то новое, и в какой-то момент монитор с кодом его начинает не устраивать. Это мозг психически здорового человека конечно же..
    Ответ написан
    1 комментарий
  • Запрос в базу данных возвращает не все строки, что делать?

    php666
    @php666
    PHP-макака
    Проблемы с классом исключены
    код класса в студию
    Класс возвращает ассоциативный массив со всеми параметрами и ключами.
    наверно не класс, а метод. Возвращает 1 строку из набора.
    Ответ написан
  • Можно ли указать два типа для аргумента?

    php666
    @php666
    PHP-макака
    На самом деле вопрос лишен практического смысла.

    PHP в большинстве случаев всем оперирует на уровне строк. Числовые параметры из запроса или из СУБД - всё приходит в виде строк. Числовые типы данных нужны для арифметических операций, значений констант, операций с массивами (хотя и там можно обойтись строками).

    Если для функции РЕАЛЬНО важен передаваемый тип данных, например только int, то и надо передавать int. Точка. И писать явно type hint = int.

    В ином случае просто не надо описывать type hint, а сделать проверку в теле функции/метода:

    if (!is_numeric($var)) throw new Exception....

    Автор же, используя 7 версию и используя подсказки типов, хочет вернуть всё на уровень PHP4, сам не понимая смысла своих действий.
    Ответ написан
    Комментировать
  • Как объявить о том что переменная в классе является объектом?

    php666
    @php666
    PHP-макака
    public function __construct(int $is_preview = 0, int $w_id = 0, array $sh_store, array $prod_gr, $type = 'prod', array $path_ls, $user, $site_sn) {}

    НИКОГДА так не пиши
    не надо в конструктор ничего пихать - не путай класс с функцией
    объект - это механизм, позволяющий изменять данные сущности в любой момент. Учи ООП.
    следовательно, делаем -set -get методы и наслаждаемся красотой:

    <?php
    class foo
    {
        /**
         * @var int
         */
        protected $is_preview = 0;
    
        /**
         * @var int
         */
        protected $w_id = 0;
    
        /**
         * @var array
         */
        protected $sh_store = [];
    
        /**
         * @var array
         */
        protected $prod_gr = [];
    
        /**
         * @var string
         */
        protected $type = 'prod';
    
        /**
         * @var array
         */
        protected $path_ls = [];
    
        /**
         * @var User
         */
        protected $user;
    
        protected $site_sn;
    
        public function __construct()
        {
    
        }
    
        /**
         * @return int
         */
        public function getisPreview(): int
        {
            return $this->is_preview;
        }
    
        /**
         * @param int $is_preview
         */
        public function setIsPreview(int $is_preview)
        {
            $this->is_preview = $is_preview;
    
            return $this;
        }
    
        /**
         * @return int
         */
        public function getWId(): int
        {
            return $this->w_id;
        }
    
        /**
         * @param int $w_id
         */
        public function setWId(int $w_id)
        {
            $this->w_id = $w_id;
    
            return $this;
        }
    
        /**
         * @return array
         */
        public function getShStore(): array
        {
            return $this->sh_store;
        }
    
        /**
         * @param array $sh_store
         */
        public function setShStore(array $sh_store)
        {
            $this->sh_store = $sh_store;
    
            return $this;
        }
    
        /**
         * @return array
         */
        public function getProdGr(): array
        {
            return $this->prod_gr;
        }
    
        /**
         * @param array $prod_gr
         */
        public function setProdGr(array $prod_gr)
        {
            $this->prod_gr = $prod_gr;
    
            return $this;
        }
    
        /**
         * @return string
         */
        public function getType(): string
        {
            return $this->type;
        }
    
        /**
         * @param string $type
         */
        public function setType(string $type)
        {
            $this->type = $type;
    
            return $this;
        }
    
        /**
         * @return array
         */
        public function getPathLs(): array
        {
            return $this->path_ls;
        }
    
        /**
         * @param array $path_ls
         */
        public function setPathLs(array $path_ls)
        {
            $this->path_ls = $path_ls;
    
            return $this;
        }
    
        /**
         * @return User
         */
        public function getUser(): User
        {
            return $this->user;
        }
    
        /**
         * @param User $user
         */
        public function setUser(User $user)
        {
            $this->user = $user;
    
            return $this;
        }
    
        /**
         * @return mixed
         */
        public function getSiteSn()
        {
            return $this->site_sn;
        }
    
        /**
         * @param mixed $site_sn
         */
        public function setSiteSn($site_sn)
        {
            $this->site_sn = $site_sn;
    
            return $this;
        }
    }
    
    $obj = (new foo())
                ->setType('type')
                ->setPathLs(123)
                ->setProdGr(1)
                ->setWId(12)
                ->setUser(new User());


    И что за имена proв_gr, w_id и тд? Гадалкой надо быть? Правильно именуй. На читай.
    Ответ написан
  • Смена профессии IT Service Manager > ???

    php666
    @php666
    PHP-макака
    В последнее время проявляю интерес к программированию, начал изучать JS, до этого баловался с HTML и CSS.
    Ты баловаться можешь хоть с легкими наркотиками, хоть с HTML. Это всё из разряда хобби и получения удовольствия. Я тоже люблю в гараже в машине поковыряться, только автомехаником я уже не стану в силу возраста и многих других причин. Нравится HTML - ради Бога. Просто реальная работа в корне отличается от домашних подделок, от которых у тебя сейчас эйфория. Прикинь, я тоже люблю кодить для себя, свой проект делать и т.д. Но реалии работы немного другие - в 95% случаев это однотипные задачи, невыносимо скучные, с невнятными требованиями и попытками сломать мозги. А насчет остального Рональд Макдональд все сказал.
    Ответ написан
    Комментировать
  • Как оценивать сроки?

    php666
    @php666
    PHP-макака
    Прикольно звучат высказывания комментаторов в духе "если вы знакомы с проектом". Мне правда интересно, как в условиях современных монстроподобных корпоративных приложений можно быть "знакомым" с проектом, который, возможно, пилится не один год (пусть хотя бы даже от 3 лет) целой командой? Ни один человек, если он не единоличный автор этого проекта, не может быть настолько хорошо быть "знаком" с проектом, что бы чётко отвечать на вопросы в стиле "сколько времени займет поправить баг". Даже программисту среднего звена ясно, что совсем маленький баг может потянуть за собой чуть ли не фатальный коллапс архитектуры с последующим тотальным рефакторингом всего и вся.

    Невозможно в разработке планировать какие-либо сроки. Тут автор прав.

    Ответ на самом деле очень простой - ты работаешь на весьма хреновой работе. Я сейчас опять пропиарю свою статью про выживание в IT, прочти её, там не касается полностью твоего вопроса, но суть очень близка (пожалуй, я потом её дополню, спасибо за "наводку" - про сроки я там не писал...).

    Как оценивать сроки? Ответ очень простой - да никак не оценивать. Если работодатель построил такую систему, где менеджмент лезет с этими бюрократическими вопросами, не понимает, что разработка или фикс багов в проекте - это не типовая работа, как, например, класть кирпичи или валить лес - то это плохой работодатель. Или плохой менеджмент. А в целом - это компания-эксплуататор, из которой надо бежать.

    Я по себе знаю, когда от меня требовали сроки. Последний раз был вообще трешачок в одной московской компании - от меня требовали сроки на 2 день после назначения задачи на меня, при этом я вообще не понимал ничего в задаче - в её бизнес-логике, т.к. работал в этой компании от силы недели три. Через буквально несколько дней меня вызвали "на ковер", мол, почему так долго. Жалею, что прямо тогда не послал их прямым текстом на три известные буквы, а продолжил работать. Ничего хорошего из этого, конечно же, не вышло.
    Сейчас я работаю в таком месте, где ВООБЩЕ нет никакого понятия сроки, где разработка проектов в корпорации длится годами - IT работает не на внешнего заказчика, а на внутреннего - на саму же корпорацию. Последний проект, в котором я участвовал, занял около 2-х лет. И бОльшая часть была не программинг, а взаимодействие разных отделов, нахождение багов, форсмажорных ситуаций после запуска и т.д. Работать в таких условиях сплошное удовольствие. Никаких стрессов, никаких менеджеров, изображающих бурную деятельность.

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

    php666
    @php666
    PHP-макака
    На данный момент обучаюсь программированию по книге "You don't know Javascript"
    обучаться программированию (читай - учиться программировать) на JS - тоже самое, что обучаться водить легковой автомобиль с помощью бульдозера. JS совсем не подходит для обучения программированию.

    стоит ли мне сейчас действительно вдумчиво изучать
    нет
    Ответ написан
    4 комментария
  • С чего начать изучение SQL?

    php666
    @php666
    PHP-макака
    существуют разные среды, грубо говоря и диалекты языка
    разница настолько несущественная для тебя, что тебе не надо даже заморачиваться на эту тему. для решения 80% задач разработчики пишут весьма типичный стандартизированный SQL. даже не заморачивайся на эту тему.
    Ответ написан
    Комментировать
  • Поддомены или вложенные страницы для гео сайта?

    php666
    @php666
    PHP-макака
    С точки зрения НЕ сео выскажусь - если у вас и регионы и города, то проектировать систему под URL site.ru/vologda/ не очень практично, имхо. Дело в том, что в будущем, возможно, понадобится выводить по принципу "услуга регион", это урл site.ru/vologda-region/. На этой странице будут все услуги региона и список городов вологодской области, провалившись в каждый из которых можно будет сделать выборку уже по городу, т.е. по урлу site.ru/vologda-region/vologda/

    vologda-region.site.ru/vologda/
    меня этот вопрос тоже интересует. Я вот не понимаю, почему много веб-сайтов делают региональность по принципу домена третьего уровня....
    Ответ написан
  • Слишком частое обращение к файлам?

    php666
    @php666
    PHP-макака
    при открытии одной страницы, запрашивается содержимое ~40-60 файлов (.txt) (в среднем)
    Это мелочи все. Обращение к файлам значительно быстрее, чем к БД.

    И если скажем на сайте 500 человек
    когда будет 500, тогда и есть смысл говорить.
    Ответ написан
  • Как хранить дочерние классы в бд?

    php666
    @php666
    PHP-макака
    Да, 4 таблицы. Но это у вас должна быть такая бизнес-логика, которая это оправдывает. Уверены что оно вам действительно требуется?

    В 90% случаев достаточно одной модели и у нее разные свойства.

    Например, пользователь - у него есть свойство пол. Или набор свойств, лежащих в отдельной таблице.

    То, что вы описываете - это наследование от интерфейса Гуманоид нескольких моделей, допустим, модели Человека и Инопланетянина. Там будет 2 таблицы и две разные модели, имплементирующие интерфейс/наследующие абстрактный класс Гуманоид. Но будет совершенно разная реализация методов.

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

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

    php666
    @php666
    PHP-макака
    Лол, все перечисленное, это основы языка, капля в море.
    Ответ написан
    Комментировать
  • Стоит ли возвращаться в профессию?

    php666
    @php666
    PHP-макака
    Насколько легко трудоустроиться программисту в 40+, 50+ итд лет?
    Стоит ли заниматься программированием в моем возрасте?

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

    Да и насколько реально будет найти работу в таком случае женщине в 39 лет
    нереально. потому, что уровня джуниора вы достигните годам к 41-42 в лучшем случае (что очень спорно и мало реально), в худшем - к 43-45. Выйдете на туже зарплату, что и раньше. Смысл?

    + возраст. Вы не осилите весь тот колоссальный объем, что сейчас требует индустрия от новичка. Это профессия молодых, морально и физически более сильных, чем вы.

    Если резюмировать, "не лезь, она тебя сожрёт"
    Ответ написан
    7 комментариев