Fi1osof

Fi1osof

Был в сети 15 февраля 2026, 22:30
Заказы не принимаю
0
0
0
тип строки (Hello world) не совпадает с типом нового объекта String (new String('Hello world'))
Совсем не удивительно, ведь тип строки (строка) не может совпадать с типом нового объекта (объект). «string» !== «object».

Столько этих «особенностей» нет ни в одном другом языке.
Для меня эти особенности — в том числе и возможности. Так что я не против.
0
В целом да, все субъективно. Но обрати внимание, что я не говорил про ужасы. Я говорил просто про то, что стал более внимательно относиться к типам. И расшифрую это так: я просто получил больше гибкости в условиях и т.п. Обрати внимание, даже в официальной документации в сравнениях используют два знака равно. https://www.php.net/manual/ru/function.empty.php
Используйте вместо него trim($name) == false
!isset($var) || $var == false
Это говорит о том, что в принципе изначально особо и не заморачивались на счет жесткости сравнения. И я когда на php программировал, в основном только и использовал if($val) да if(!$val), то есть просто простейшие сравнения использовал.
В js я использую:
1. foo === undefined чтобы проверить была ли вообще передана переменная (в php аналог isset).
2. foo === null, чтобы проверить, что переменная была передана, но значение установлено нулевое, то есть мне именно надо сбросить значение.

Говоря про эти два момента, в php обычно просто проверяют isset() и empty(), но если брать $foo = null, то isset($foo) и empty($foo) оба вернут true. Часто ли ты используешь сравнение с null?

При этом смотри какой интересный момент:
$v;
print (int) ($v === null);
print (int) (empty($v));
Получаем «PHP notice: Undefined variable: v», но «11», то есть необъявленная переменная таки === null.
В js undefuned !== null, то есть для меня это дополнительные условия сравнения.

3. instanceof.
4. typeof.

3 и 4 аналоги тоже есть в php, но я ими очень редко пользовался. В js повсеместно использую.

Еще раз уточню: в php в основном сравнения на уровне скалярных величин происходят. В js сравнения используются гораздо шире.
+1
+6
0
+1
+1
то RESTful подойдёт, он же проще ставится и работает только на PHP, на котором и сам MODX крутится.
GraphQL реализация есть и на php.

Правда работы изначально придётся провести довольно много, чтобы прописать всё взаимодействие (запросы, мутации, подписки) в резолверы.
Тут вопрос спорный. Уже довольно много средств есть для генерации всего и вся, в том числе резолверов. К примеру, на той же призме, достаточно описать схему и запустить деплой, будет не только структура БД создана, но и сгенерированы CRUD-резолверы, включая условия поиска, сортировки и т.п.
0
+3
Это позволяет сделать сайт не только быстрыми, но и делает его гораздо более безопасными из-за отсутствия запроса к базе данных.
Здесь, конечно, слукавил немного. Какая разница в какой момент происходит обращение к базе данных (в момент серверного рендеринга или потом по API)? В любом случае есть тонкий клиент к БД (окно). При чем вот в таком современно формате это окно более открытое и опасное, потому что в классическом варианте бОльшую часть из БД можно получать не давая пользователю доступ к этим запросам (то есть извне не вызвать просто так, можно только страницу вызвать). А в случае с JAM используется более обширное API, позволяющее получить практически всю информацию (иначе она не подтянется и просто не отобразится на сайте). Так что где безопасней, это еще бабка надвое сказала.
+1
Николай, разработка сайта в целом — это бэк и фронт. MODX — это только бэк. А по фронту здесь мало информации. Получается, делаешь сайт на MODX, на сервере все ОК, а фронт — как будто школьник учится. По фронту информация нужна однозначно. А фильтроваться будет само — кому не интересно, тот пропускает. А тратить свои калории и писать часто что-то не интересно — не каждый станет. И по большому счету львиная часть топиков здесь — это вопросы из серии «как мне вставить чекбокс?». И что теперь? Сказать им «Не пишите такие статьи, они бесполезные, пишите только очень интересные и полезные статьи»? Вот такая статья стоит десятков среднестатистических заметок здесь.
0
Кстати, хотелось бы еще аргумент высказать в защиту серверной реализации JS.
Ноду можно запускать с дополнительным флагом node --experimental-modules и получать некоторые дополнительные фишки, к примеру,
esm. habr.com/ru/post/433964/
Для браузеров пока esm совсем не стандарт, но на сервере, когда ты знаешь, что окружение единое (а не как 100500 браузеров пользовательских), я считаю использование нативного js без всяких там пре/пост процессоров, сборщиков и т.п. очень даже оправдано. Во-первых, никакой предварительной компилляции. Во-вторых, логи ошибок, где бы они не возникли, ссылаются четко на строки в исходниках, а не на сжатые версии, где ты не разберешься без допсредств. В-третьих, потребление памяти меньше, а производительность выше. В-четвертых, можно линковать компоненты не только в рамках одной рабочей директории. Да и вообще плюсов много.
Серверная часть prisma-cms у меня все на mjs написана. github.com/prisma-cms/boilerplate/tree/master/src/server
0