• Как перестать комментировать всё подряд?

    @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. Но функционал языка и то, что используете лично вы - это разные вещи, так что никто не будет вас уговарить чем-то пользоваться.
  • Где применяются key(), next(), current()?

    @Vitsliputsli
    Илья,
    Ну для начала если у вас в памяти массив на 1М значений, то foreach меньшая из проблем :) А в какой ситуации нам неважен сам элемент, а важен лишь его порядок? Разве что при пагинации, но возвращаемся к вопросу зачем вообще 1М значений в памяти?

    Задачи бывают разные, php язык общего назначения, поэтому в нем есть разный функционал. Но вы можете направить обращение в PHP, чтобы выпилили все "лишние" функции, т.к. лично вы не применяете ничего сложнее пагинации.
    iterator_to_array работает с объектами, это не процедурная функция.
    array_reverse потребует перестройки хеш-таблицы, а на это может потребоваться несколько, а то и несколько десятков миллисекунд.
    Эээ итератор делает то что он должен - перебирает значения. Если нужно "что-то иное", то по определению итератор не подходит т.к. он не "что-то иное".

    А я где-то написал, что итератор не перебирает значения?
  • Где применяются key(), next(), current()?

    @Vitsliputsli
    Илья,
    а чем конструкция if (условие) continue не устраивает внутри foreach?

    У вас большой массив, скажем 1 000 000 значений, вам нужно поменять значения с 800 000 по 900 000, вы установите указатель на 800 000 и пройдете 100 000 значений, или будете проходить 900 000 значений? А если вам нужен перебор в обратном порядке?

    Foreach при любом раскладе удобнее чем процедурные функции, которые ИМХО рудимент без полезной нагрузки.

    Foreach ограничен, о чем говорит его название "для всех", нужно что-то иное, он уже не подходит. Если вы пишите ООП код, то да, вам не нужны процедурные функции. Если вы пишите процедурно, то вам не нужны ООП итераторы. Но это не значит, что что-то не нужно, потому как одному из 2х перечисленных оно не понадобилось.
  • Где применяются key(), next(), current()?

    @Vitsliputsli
    Muranx, Илья, Дмитрий, у нас есть итераторы ООП и есть процедурные итерирующие функции. Т.е. если не используешь ООП, то очевидно нужно выбирать эти "как бы ненужные" функции.
    foreach - это очень простой итератор, который перебирает только слева направа, и весь массив. Если, вдруг, нужен другой порядок перебора, или нужно перебрать массив начиная с какого-то значения, то foreach уже не подойдет.
    Можно перебирать через while или for, но в этом случае теряем производительность, из-за необходимости получения каждого значения через ключ.
  • Работа с базами данных в php в сравнении с django?

    @Vitsliputsli
    1998or2, посмотрите Doctrine, этот механизм миграций более похож на используемый в Django, хотя и не полноценная замена.
  • Как быстро и с минимальной погрешностью подсчитать число записей в таблице с миллиардами записей?

    @Vitsliputsli
    Uno, любая СУБД имеет свои недостатки, любую сложную БД тяжело масштабировать.
    Но что не так с PostgreSQL? И что следует выбирать для нагруженных проектов? Что более адекватное?
  • Как увидеть ws запросы?

    @Vitsliputsli
    Серега Серега, ну вот же оно, нажмите на него и посмотрите, что передается внутри.
  • Как обрабатывать ошибки file_get_contents?

    @Vitsliputsli
    FanatPHP, я не говорю ерунду, а спрашиваю зачем. Нужна или не нужна ошибка в логах, зависит от задачи, если у тебя ощущение что file_get_contents не нужно выкидывать ошибку в любом случае - направь предложение в php, пусть поправят. Вполне возможно ты угадал мотивы автора и конкретно здесь не нужно фиксировать ошибку в логе, но, повторюсь, я ничего не утверждал, а спрашивал про задачу.