• Является ли PHP аналогом Flask?

    @Vitsliputsli
    Александр, процессная многопоточность реализуется легко, очевидно. Многопоточность через треды тоже без костылей (если я не прав, расскажите подробнее что имеете ввиду), другое дело, что это нестандартное, непривычное решение в php.
  • Является ли PHP аналогом Flask?

    @Vitsliputsli
    Денис Юрьев, да, я собственно это и хотел уточнить, что сделать можно и там, и там, но для каких-то вещей удобней использовать python.
  • Что плохого в статических функциях?

    @Vitsliputsli
    MikUrrey, это понятно, но чем это лучше? Статические обращения не используют из-за проблем, которые это вносит. Но вариант 2 не решает подобных проблем, на мой взгляд, мы просто формально не используем статические методы, но фактически ничего не изменилось. Или нет?
  • Что плохого в статических функциях?

    @Vitsliputsli
    MikUrrey,
    - теперь вместо
    \app\helpers\StringHelper::truncate($string);
    используем
    \app\helpers\string\truncate($string);
    суть не меняется, но мусорный бак с набором "всякой всячины" превратился в аккуратный чемоданчик инструментов)

    А можете пояснить, чем 2ой вариант лучше? Выглядят они одинаково.
  • Является ли PHP аналогом Flask?

    @Vitsliputsli
    А что пхп не может, что может python?
  • Как исключить из выборки, группу записей с одним ID при выполнении условия?

    @Vitsliputsli
    Группируйте по аккаунту, считайте внутри группы кол-во соответствующих и не соответствующих, исключайте группы по этим данным.
  • Почему не работает проброс порта для GIT?

    @Vitsliputsli
    Судя по ответу он подключается, но не может найти указанный реп. Попробуйте посмотреть, что напишет:
    git remote -v

    Зачем, вы подключаетесь по https,если настраивали только ssh? Да и странно это, на стандартный порт https настраивать ssh.
  • Как перестать комментировать всё подряд?

    @Vitsliputsli
    Нормально комментируете, вряд ли назначение переменной очевидно без этого комментария. Как написано выше правильнее выбирать хорошие имена для переменных, но не всегда это просто и очевидно, да и когда название переменной становится слишком длинным тоже не хорошо.
    Ну разве что, вместо "true — клик разрешён, false — клик запрещён" достаточно указать что это тип bool. И посмотрите как оформляются комментарии к переменным в вашем языке.
    Кодирование - это только один из этапов разработки, лишь у новичков уходит на него 95% времени. Возможно вы начали это понимать.
  • Почему get_object_vars() возвращает только НЕ типизированные свойства?

    @Vitsliputsli
    Сергей Кореневский, в том то и дело, что речь именно о бизнес-логике, ну мы же не про Си говорим, речь шла не про управление памятью... Еще раз, у вас есть int, вы предлагаете сразу же, автоматом, запихнуть в него 0, в принципе ок, когда это у вас счетчик, например, и первоначальное значение у него 0. Но, если это что-то иное и примет оно значение позже, может 0, может 1, может -10000? До этого момента, значение не определено, и если все равно, автоматом, туда положить 0, то этот 0 будет просто мусором. Причем мусором, он будет именно с точки зрения бизнес-логики.
    Поэтому, как я и написал выше - "речь про стабильность и контролируемость кода", а не про "высокопроизводительную оптимизацию". Все прекрасно знают, что преждевременная оптимизация - это зло, и никто не пишет сайты на ассемблере.
    А проблема в том что получив класс с 200 полями, сбиндить это таблицей базы данных, а потом это сбиндить с таблицей пользовательского интерфейса, деревом каталогов, и таймлайном.

    Так может не стоит делать класс на 200 полей?
  • Можно ли вынести повторяющийся цикл foreach в отдельную функцию?

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

    от ваc хотят примерно это:
    private int $averageWordsCount = 0;
    private array $arSections = [];
    
    function postsProcess(): void
    {
    	$allWordsCount = 0;
    	foreach ($this->posts as $item) {
    		$allWordsCount += count(preg_split('/\s+/', $item['description']));
    		$this->arSections[$item['category']][] = $item;
    	}
    	$this->averageWordsCount = $allWordsCount / count($this->posts);
    }
    
    function countAverageNumberOfWords(): int
    {
    	return $this->averageWordsCount;
    }
    
    function getItemsSortBySections(): array
    {
    	return $this->arSections;
    }
  • Как обойтись без бесконечного цикла?

    @Vitsliputsli
    Adamos, ну это чисто гипотетический пример, чтобы разобрать ситуацию.
  • Изгиб кабеля GPON влияет на скорость интернета?

    @Vitsliputsli
    Любые изгибы приводят к потерям, не сильные изгибы, как написал 15432 вполне приемлемы, точных пределов не подскажу, да и зависят они от многих факторов (например, от длины волны). В вашем случае, после повреждения кабеля, возможны образования микроизгибов, которые тоже приводят к потерям, а ваш изгиб становится последней каплей приводящей к сильному затуханию луча.
  • Как обойтись без бесконечного цикла?

    @Vitsliputsli
    Adamos, именно недооценивать, php - язык общего назначения, и демоны на нем прекрасно работают. Скрипты php - это уже много-много лет как не только "должны быстренько отработать и сдохнуть".
  • Почему get_object_vars() возвращает только НЕ типизированные свойства?

    @Vitsliputsli
    Сергей Кореневский, типизация в пыхе есть с самого ее создания. Что значит "Си типизирован так же"? Как так же? Можно подумать типизация C# и PHP очень схожа. Аналогия интересная, к реальной ситуации отношения не имеет, но показывает как вы воспринимаете ее. Замечу только, что PHP это не "рубаха", которую шьют лично под вас, да еще и перешивают, когда вы недовольны.
    А теперь по делу. У вас аргумент - мне так удобнее, я так привык. Вы всегда строили ваш код, рассчитывая на эти дефолтные значения, но это не значит, что все так делают или что это истина. Когда свойство не было проинициализировано, код должен упасть, указав, что кто-то забыл это сделать, а не отработать, потому как автоматом там лежит мусор. "Знак вопроса поставить не долго", только это уже будет не тип int, а int+null, а потом еще этот тип нужно будет тащить дальше, при этом null нам не нужен, мы не будем его использовать. Да, можно вкрячить проверки на null, но с таким же успехом, можно и не использовать указание типов и проверять все это в коде. А это уже речь про стабильность и контролируемость кода, а не про "поставить не долго", лень написать значения для всех переменных, т.е. про вещи на порядки более важные.

    p.s.
    Для краткости там могло быть значение с нулевой датой.
    Очевидно язык программирования эволюционирует от сложного к простому. Чтобы тоже самое пришлось писать меньше в разы.

    Подумалось тут, что у вас странные проблемы и понимание сложного в программировании. Вы действительно считаете, что сложное - это писать значения переменных, или что простой код - это код в котором мало символов?
  • Почему get_object_vars() возвращает только НЕ типизированные свойства?

    @Vitsliputsli
    Сергей Кореневский, то что вы так привыкли работать в другом языке - это не аргумент. Я тоже могу написать, а вот в Си с первого дня своего существования переменная должна быть инициализирована обязательно. И?
    Если по существу, то в php данный вопрос реализован лучше и гибче. Вам нужен инициализированный параметр, пожалуйста:
    public int $count=10; - причем не с каким-то непонятным нулем, а ровно с тем, что нужно.
    public ?int $count=null; - захотели, чтобы переменная была инициализирована типом null, пожалуйста.
    Но вполне может быть, что я не хочу, чтобы переменная была инициализирована при создании объекта, я хочу знать установлен этот параметр или нет. Если там везде уже будут лежать какие-то ненужные значения, этого не сделать.
    Т.е. чтобы получить желаемое вами поведение достаточно дописать =0, что просто и очень наглядно. Но при этом гибкость работы с параметрами возрастает очень сильно.

    Null - это особый тип данных, с одним значением, динамические неинициализированные переменные получают этот тип. Но когда у нас указан тип int, никакой null туда уже не влезает.
  • Как мне написать скрипт который будет выводить на экран СОДЕРЖИМОЕ файлов директории?

    @Vitsliputsli
    helpmeee, что значит "не работает"? cat прекрасно работает, и проверяет директорию, и выводит содержимое файлов, т.е. полностью решает задачу. Быть может он делает чего-то еще что вы от него ждете, но по "не работает" вряд ли кто-то сможет догдаться что это.
  • Почему get_object_vars() возвращает только НЕ типизированные свойства?

    @Vitsliputsli
    Сергей Кореневский,
    array(1) {
    ["id"]=>0
    }

    в том то и дело, что свойство не имеет значения, оно не инициализировано. Если обратиться к нему, то окажется, что никакого 0 там нет.

    Ну при чем здесь анонимные классы? Да и рефакторинг тоже не при чем.
    Я вам не запрещаю хотеть, просто подумал, что вы считаете это поведение ошибочным. Лично для меня она не выглядит очень нужной, но у каждого свое мнение. Кроме того, можно написать <?//= $x ?>.
  • Почему get_object_vars() возвращает только НЕ типизированные свойства?

    @Vitsliputsli
    Сергей Кореневский, а что написали в своем запросе? Что функция должна возвращать?
    Т.е. для MyClass2 она вернет:
    array(1) {
    ["id"]=>
    NULL
    }
    а что она по новой логике должна вернуть для MyClass?

    Для <?= //$x ?>, разверните короткую запись в полную, если не видите ошибки:
    <?php echo //$x ?>
    Т.е. вы используете echo без аргументов, а это нарушение синтаксиса. Получается ошибки интерпретатора нет, есть хотелка на внедрение новой языковой конструкции. Сейчас <?= просто алиас, сокращение, вы же хотите новую конструкцию с иным поведением. Без достаточно веских причин, вряд ли этим займутся.
  • Где применяются key(), next(), current()?

    @Vitsliputsli
    Илья,
    Видимо у вас кроме "теоретических" задачек когда нужен reset/key/next/prev/... вместо итератора - нет.

    Могу только еще раз повторить, если вы не делаете ничего сверх пагинатора, от этого языки общего назначения не будут выпиливать функционал, который лично вы не используете.


    А я где-то написал, что итератор не перебирает значения?

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

    это чьи слова?

    Могу еще раз спросить, где здесь написано что итератор не перебирает значения? Посмотрите на мой коментарий выше: "foreach - это очень простой итератор, который перебирает только слева направа, и весь массив". Начните читать полностью, а не вырывать удобные фразы из контекста.

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