• Достоинства и фатальные недостатки типизации в php
    –1
    Запрос элемента с несуществующим ключом приведет к выбросу предупреждения (можно проигнорировать) и возврату null значения.
    Но поскольку в языке есть явная конструкция проверки существования элемента — проблема не имеет смысла.
  • Достоинства и фатальные недостатки типизации в php
    0
    Нет никакой «строгой типизации» в PHP. Есть контроль типов в рантайме.
    И да, у вас есть возможность его использовать либо не использовать. Что прекрасно, имхо.
  • Достоинства и фатальные недостатки типизации в php
    0
    Включая статические гарантии не выхода за границы? Или как проблемы-то решаются?


    Покажите мне практический пример «выхода за границы» для массивов в PHP — и тогда обсудим вопрос про гарантии.

    На самом же деле постановка вопроса не имеет смысла, поскольку «массивы» в PHP это не массивы с фиксированным размером элемента и смещением, а что-то вроде hashmap (тоже неверно, но ближе к истине)
  • Достоинства и фатальные недостатки типизации в php
    0
    Вы не ответили на вопрос «зачем оно так»
  • Достоинства и фатальные недостатки типизации в php
    –7
    Не понимаете главного — зачем этот язык. От непонимания идет нежелание его изучать. От нежелания изучать — недостаток знания и понимания.

    Замкнутый круг.

    Попробуйте ответить на самый простой вопрос для самых-самых начинающих — а зачем вообще в PHP
    empty('0') === true;
    ?
    Какой практический смысл в таком?

    С точки зрения любого не-PHP программера ересь же. Непустая строка пустая?
  • Достоинства и фатальные недостатки типизации в php
    –6
    Практика показывает что те, кому язык не нравится, не изучают его в должной мере. И, следовательно, не понимают.

    Изучение же, приводя к пониманию, затем убирает это странное «не нравится». Ну или человек уходит на другую платформу.
  • Достоинства и фатальные недостатки типизации в php
    –3
    Однако это сомнительный плюс, если честно.

    Не пишите на PHP. Он вам не нравится, и, как результат — вы его не понимаете.
  • Достоинства и фатальные недостатки типизации в php
    –1
    выдаст единицу. Молча, неявно преобразовав тип.


    Как же «неявно», если вы сами написали «int»? Что тут неявного?
  • Достоинства и фатальные недостатки типизации в php
    0
    Каких проблем?

    — создание в рантайме массива
    — динамическое добавление и удаление элементов массива
    — возможность иметь неплотное и немонотонное множество ключей
    — упорядоченность массива, отдельная от упорядоченности ключей
    — нетипизированность массива

    Поверьте, не каждый язык это всё умеет.
  • Достоинства и фатальные недостатки типизации в php
    +1
    Практическая эквивалентность это
    1 == '1' == true
    0 == '0' == '' == false == []

    что с трудом достигается в строго типизированных языках с контролем типов времени компиляции

    На практике же такая эквивалентность необходима просто в силу того, что так устроен HTTP и CLI.
  • Достоинства и фатальные недостатки типизации в php
    +1
    Да, когда-то целью php это было. Но ввели declare(strict_types=1). Это для чего?
    По-моему чтобы избавиться от неявного, разве нет?

    Нет.
    Эта директива компилятора просто запрещает кастинг скаляров в рантайме в строго определенных случаях (ровно в двух), заменяя кастинг на строгий контроль типа с выбросом исключения. Всё.

    Причем тут ваши фантазии о «явном» и «неявном» — я не знаю.

    И не надо, пожалуйста, рассказывать о «целях PHP». В вашем исполнении это звучит как минимум странно.
  • Достоинства и фатальные недостатки типизации в php
    +4
    Можно ссылочку на документацию, где указано, что цель развития PHP — соблюдение принципов SOLID?

    И не кажется ли вам, что соблюдать эти принципы должен программист, как разумное существо, а не язык, как набор инструментов?

    Это всё равно что сказать, что нож нарушает уголовный кодекс.
  • Достоинства и фатальные недостатки типизации в php
    +1
    Ну да, соглашусь.
    Пожалуй не хватает только конструктора кастомных типов.
    Что-то вроде
    type iterable = array | \Iterator, но в своем коде
  • Достоинства и фатальные недостатки типизации в php
    –1
    Если вы всерьез задаете этот вопрос, то нет, не смог бы в одном кратком комментарии. Это тема целого цикла статей или учебного курса.

    Но если совсем коротко, то успешно решаемые задачи в PHP стоит свести к нескольким важнейшим пунктам:
    — автоматический динамический кастинг скалярных типов
    — реализация понятия «практической эквивалентности»
    — стандартизация всех i/o хэндлеров в едином типе resource
    — решение всех проблем, которые возникают в других языках с динамическими массивами
    — реализация класс-ориентированного подхода
    — контроль типов времени исполнения
    — контроль типов времени компиляции

    Постарался расположить по степени важности
  • Достоинства и фатальные недостатки типизации в php
    –6
    Можно я чуть-чуть «сагрюсь» еще? Ну совсем немножко?

    Система типов хуже, чем у java — ну извините, это медицинский факт, а не тональность.

    Вот здесь у вас фатальная ошибка и недостаток. У вас, а не в PHP. Ошибка в том, что вы пытаетесь личное субъективное выдать за объективное сравнение несравнимых величин. Пресловутые «килограмм» с «километром»

    Система типов в PHP не «хуже» или «лучше» — она другая. Она построена на иных принципах и решает иные задачи, нежели в Java.

    Не понимаете? А как вы тогда руководите разработкой?
    Впрочем, этот вопрос я вам уже задавал, ответа не последовало.
  • Достоинства и фатальные недостатки типизации в php
    +1
    Я бы не «агрился» так, если бы не очевидный вред от таких статей.

    Вы своё собственное несовпадение «идеального языка» и реального PHP почему-то считаете проблемой последнего. Да еще и называете «фатальным недостатком»

    Если бы не подобная тональность статьи — никаких отрицательных эмоций в вашу сторону не было бы.
  • Достоинства и фатальные недостатки типизации в php
    –2
    Я не уверен, что вы верно понимаете, в какую сторону идет PHP. И более того — не уверен, что цель этого движения именно «строгая типизация» в вашем понимании.
  • Достоинства и фатальные недостатки типизации в php
    +3
    А нужно дотягиваться?
    Зачем вообще принципиально слаботипизированному языку с динамической «рантайм» системой типов дотягиваться до языков со статической типизацией?
    Кто такую цель поставил для PHP? Вы?
  • Достоинства и фатальные недостатки типизации в php
    +15
    проблемы у языка, конечно же, есть, и они серьёзные

    до java/c# пока что очень далеко

    ВНЕЗАПНО не строго типизированный язык

    конечно, не дотягивает до java/c#/typescript


    Антон, так пишите на Java или C#, кто же вам запрещает-то?

    Статья — прекрасный образец самой настоящей демагогии.

    Берем язык А, в котором нет фичи b, поскольку она не нужна или реализована иначе.
    Берем язык B, в котором фича b в наличии
    Намеренно опускаем момент, что это принципиально разные языки и сравниваем килограмм с километром, делая вывод, что «А не дотягивает до B»

    Я никогда не понимал — как можно быть «руководителем отдела разработки» на языке, который тебе так не нравится? Расскажите, Антон, пожалуйста, как вы планерки проводите?

    Примерно так: «Парни, начинается новая неделя и нам всем снова предстоит писать код на этом ненавистном PHP, будь бы он неладен… Когда же это кончится уже?»
  • Как прочитать большой файл средствами PHP (не грохнув при этом сервак)
    +1
    Исходите из того, что для PHP любое окружение — неизвестное.

    Вы, как разработчик не знаете, как будет запускаться ваш скрипт. Apache (модуль) или php-fpm? Или встроенный сервер? Или cli-режим? ВМ? Контейнер?

    Ваша задача сделать так, чтобы максимально абстрагироваться от окружения. А для этого есть отличное правило «явное лучше неявного».
  • Как прочитать большой файл средствами PHP (не грохнув при этом сервак)
    0
    Если указан относительный, то он вычислится относительно текущего файла. По сути та же подстановка DIR, но на уровне языка, а не пользовательского кода.


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

    В общем не пользуйтесь относительными путями в ФС. Так надежнее.
  • Как прочитать большой файл средствами PHP (не грохнув при этом сервак)
    +1
    Вы ошибаетесь. Указание текущей директории в виде точки или двух точек как раз и приводит к поиску относительно… правильно! текущей директории.

    А вот какова она — вы в общем случае заранее не знаете.
  • Как прочитать большой файл средствами PHP (не грохнув при этом сервак)
    +4
    Да, путь всегда должен быть абсолютным. Вы можете воспользоваться магической константой __DIR__, чтобы сделать абсолютный путь независимым от окружения.

    Указывать относительные пути — это дорога в ад отладки. Задайте себе простой вопрос «А относительно КАКОЙ конкретно директории будет отсчитываться этот путь?» На моей памяти ни один программист PHP не сумел правильно с первого раза ответить на этот простой вопрос.
  • Как прочитать большой файл средствами PHP (не грохнув при этом сервак)
    –1
    Всё хорошо, с удовольствием прочел и поставил плюс
    Но
    Когда я вижу

    require "memory.php";

    относительные пути в ФС — мне становится плохо.
    Пожалуйста, не делайте так, особенно в статьях, которыми потом будут руководствоваться начинающие!
  • Что нового в DataGrip 2017.3
    0
    Е-мое, как же я не нашел-то?
    Спасибо!
  • Что нового в DataGrip 2017.3
    0
    ClickHouse есть в планах? Или может быть есть сторонний плагин?
  • 10 самых трендовых и мертвых технологий, фреймворков и языков по версии Stack OverFlow. Коротко
    0
    Perl хоронили, порвали три баяна…
  • Премирование vs депремирование
    +8
    >> А как бы вы отнеслись к такой теме, коснись она непосредственно вас?

    Я стараюсь придерживаться очень полезного жизненного принципа: «Никогда не иметь никаких дел с мудаками».

    Поэтому просто встал бы и ушел.
  • Золотое сечение (число Фи) и время, ваше мнение?
    0
    Это теперь с вами до конца жизни, смиритесь :)
  • Золотое сечение (число Фи) и время, ваше мнение?
    +3
    Думаю, автору нужно познакомиться с создателем ognennoe.ru
    Им явно есть, что обсудить.
  • О перехвате трафика: 4-10% зашифрованного HTTPS-трафика сегодня перехватывается
    +4
    Экая новость.

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

    И да — чтобы ее выключить, мотивируя, например, тем, что curl и прочее консольное хозяйство не очень как бы ожидаемо работает, у меня ушел месяц. Никто в безопасности просто не был в состоянии даже понять — чего же я прошу от них?
  • Своя система сборки на Linux
    0
    Phing — на PHP, а не для PHP. Что, впрочем, никак не ограничивает его область применения.

    По крайней мере запустить сценарий на phing гораааздно проще, чем Ant.
  • Своя система сборки на Linux
    +1
    Вы написали заново Ant / Phing
    Поздравляю.
  • Путешествие за бугор и обратно: как не надо устраиваться работать за рубежом
    +23
    Идеальный хабрасуицид, однако.
  • Реализация и альтернатива основных JQuery функций на чистом JavaScript
    +2
    Уважаемые друзья из мира Javascript!
    Выучите уже наконец несложную разницу между библиотекой (или даже «библиотекой библиотек») и фреймворком.

    Имя этой разнице — «инверсия управления»:
    — Если вы используете библиотеку, то ваш код вызывает методы библиотеки по необходимости.
    — Если вы используете фреймворк, то вы пишете код, который будет вызван фреймворком по некоему событию.

    Всё очень просто и никак не зависит от языка и года на календаре :)
  • Стоимость недвижимости на тепловых картах
    +1
    Спасибо за интересную статью, но, если честно, в нынешнем виде карта «не работает».

    Откройте, для примера, Крылатское. Соседние, совершенно одинаковые дома почему-то попадают в категорию 369 Круб или 234 Круб. Причем центрами более дорогих «пятен» в обоих случаях служат лесные массивы, где жилья вообще нет…

    При этом реально дорогой ельцинский дом на Осенней почему-то никак не повлиял на тепловую карту.
  • Форма авторизации с отправкой зашифрованного пароля
    +1
    Ну так и вы не лезьте на хабр, пока не научитесь писать код так, как его пишут в цивилизованном мире.

    А то сожрут ведь :)
  • Форма авторизации с отправкой зашифрованного пароля
    0
    Ваш вопрос изоморфен вопросу «почему люди не должны убивать других людей»?

    Потому что так общепринято и стандартно.
  • Форма авторизации с отправкой зашифрованного пароля
    0
    После этого комментария я окончательно потерял нить разговора и перестал понимать, что вы хотите.
  • Форма авторизации с отправкой зашифрованного пароля
    0
    Это из личного опыта. Я наблюдал это много раз. Стандартизацией убивается индивидуальность.

    Так и пишите тогда. И не надо извиняться и говорить, что не хотели задеть — задели. И хотели.

    Я говорю вам, что вы учите людей клеить обои. Мотивируя это тем, что это ремесло, надо зарабатывать на жизнь, и все равно 95% из них больше ничего не светит.
    Учите, что в 2017 году есть стандарты и обои нужно клеить только вертикально, только с перехлестом в 5 мм. и если обои отклеились, что виноваты не стандарты, а просто хреново приклеили.

    Совершенно верно.

    И пока студент не поклеит тысячу квадратных метров обоев я его близко даже к «творчеству» не допущу. Иначе результат «творчества» будет жалок. Что мы и наблюдаем в обсуждаемой статье.