[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ActiveRecord
Страницы: 1, 2, 3, 4, 5, 6
twin
Кстати говоря, PDO (а у меня он) вообще не работает с типами, кроме как string, int и bool. Всё, что не указано, как PDO::PARAM_INT или PDO:: PARAM_BOOL, будет обработано, как PDO:: PARAM_STR.

Так что получается это все напрасно. Или есть другая причина.

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
twin
Опять вопрос возник. Касательно преславутого PSR.

Обычно принято в таблицах СУБД поля называть в змеиной нотации (user_id, published_date, view_count и т.д) А когда я только начинал лепить этот фреймворк, меня убедили, что переменные и свойства лучше писать в верблюжьей нотации ($userId, $publishedDate и пр). Оно и верно, проще ассоциировать с методами.

Однако теперь получается, что в AR моделях произойдет разброд. Половина свойств в одной нотации, половина в другой. А это противоречит PSR-1, который рекомендует единый стиль. И хотя эта рекомендация обозначена, как SHOULD (крайне желательно, но необязательно), все равно будет не ахти.

Мне интересно вот что. Не знаю, как в Yii, но в Laravel есть возможность конвертации имен в обе стороны. Но почему то они этого не делают. Почему? И стоит ли сделать это мне?

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Arh
Я как то давно думал что бы имена таблиц и полей называть в верблюжьей нотации, по аналогии с методами и свойствами. Если уж единый стиль, то во всём.
$row['userName'] ничем не хуже $row['user_name']

Единственное что меня не устраивает, прям минус 80 лвла, это когда нужно как то искать по шаблону.
Везде используются те или иные разделители, в таблице подчёркивание, в файлых точки и подчёркивания, в ключах точки и двоеточия и точки с запятой и запятые, а тут нет разделителя, и очистить все таблицы начинающиеся на cache не получится, потому что допустим есть cacheNews (кэш новостей) а есть cachevar (люди, которые варят кашу).
В итоге кажется что верблюжья нотация это ущербный стиль.

Но если думать о DB как о многомерном массиве данных, тогда всё встаёт на свои места.
Таблица это ключ и поле это ключ $bd['user'][0]['name'].
Ключи есть смысл искать по шаблону, а имена искать особо нет смысла.

Ключ это просто метка данных, которая может состоять из нескольких значений.
Значения можно объеденять через запятую, если используется перечисление
$news['2017,2018']

Можно через двоеточие если используется несколько разных типов значений
$news['16:00']

Можно через точку с запятой объединять
$news['2017,2018;16:00']

А можно использовать составные имена
$config['site.title']
$config['site.description']


Было бы логично таблицы и имена полей называть через точку. Таблица cache.news, поле date.create.
Но синтаксис SQL использует точки в запросах
SELECT u.`id` FROM `user` as u WHERE u.`name` = 'Вася'

Наверное получится не очень читабельно.
SELECT c.`date.create` FROM `cache.news` as c WHERE c.`date.update` < :date

Хотя норм.

В общем я к чему. Если сделать всё по науке в одном стиле, тогда имена полей будут через точку.
Это значит что имена свойств тоже должны быть через точку? Нет. Имена свойств это имена, а не составные значения как ключи. Так что преобразуй поля user_name или user.name (хз как будет модно завтра) в $this->userName.
При этом в массиве это будет по прежнему $row['user.name'].

ИМХО





_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
twin
Все эти двоеточия, запятые и прочая лабуда в ключах массива - жуткий моветон. Как с таким массивом работать скажем функцией extract()? :) Допускается в редких, специфических случаях.
Цитата (Arh @ 21.03.2018 - 08:48)
SELECT c.`date.create` FROM `cache.news` as c WHERE c.`date.update` < :date
А это вообще кошмар. Что это, таблица, алиас или просто часть имени столбца? Не говоря уже о том, что нельзя без косых кавычек. (А вообще, можно ли даже с ними?)



Но это так, к слову. К делу отношения не имеет. А имеет вот что.
1. Верблюжья нотация не рекомендуется для БД, так как она вообще не чувствительна к регистру, а PHP чувствителен к регистру переменных. И могут возникникнуть непредвиденные последствия.
2. Кроме того, Linux тоже чувствителен к регистру, а значит, при ассоциациях названий таблиц с файлами, тоже могут произойти казусы.
3. Змеиная нотация наиболее популярна при использовании в БД. А это фреймворк, и тут нужно ориентироваться не на сиюминутные хотелки, а на тренды.

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

Тогда пробоем с восприятием и PSR-1 не будет. Я так и начал делать, но вдруг увидел, что Лара так не делает, хотя имеет для этого готовый инструмент. Причем применяет его тут же, при ассоциациях с методами. Допустим мутатор аттрибута first_name выглядит так:
    public function getFirstNameAttribute($value)
{
Вот из доки:
Цитата
Помните, что имя метода должно следовать соглашению camelCase, даже если поля таблицы используют соглашение snake-case, т.е. с подчёркиваниями.


Почему так то? Я хотел сделать красиво, а страшно теперь. :(

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
twin
Я понял почему! Блин, все просто. Не все же юзают верблюжью нотацию в переменных. Они оставили так, чтобы было право выбора.

Я сделаю это настройкой. Однообразие стиля все же приятная штука.

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Arh
twin
Цитата
Все эти двоеточия, запятые и прочая лабуда в ключах массива - жуткий моветон. Как с таким массивом работать скажем функцией extract()? smile.gif Допускается в редких, специфических случаях.

Где нужны, там и используются) extract на user_name тоже будет неправильно с точки зрения camelCase. А если $cache['skjdfhaskdfjhaskdfjhskkjafh'] какой то md5, зачем делать extract.
А в редис вообще двоеточие рекомендуется, клиенты по нему ключи в дерево разбивают.
Так что не надо, все эти двоеточия, запятые и прочая лабуда в ключах массива - очень даже бонтон)

Цитата
Змеиная нотация наиболее популярна при использовании в БД. А это фреймворк, и тут нужно ориентироваться не на сиюминутные хотелки, а на тренды.

Ну сегодня в php тренд писать свойства в camelCase, в sql в snake_case. Значит нужно конвертировать.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Arh
Почему кстати snake_case так называется?
Я понимаю camelCase горбатый, можно быть много как его назвать, но и так тоже логично.
Понимаю kebak-case, слова как будто на шампур насажены.
А в snake_case змею в упор не вижу, может надо накуриться посильней?)

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
twin
Цитата (Arh @ 21.03.2018 - 11:38)
Почему кстати snake_case так называется?

ну_потому_что_длинная_и_стелится_по_земле


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
chee
Цитата (twin @ 21.03.2018 - 13:50)
Я сделаю это настройкой. Однообразие стиля все же приятная штука.

достижение "усложнить себе жизнь" получено
достижение "уменьшить производительность" получено

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
twin
Цитата (chee @ 21.03.2018 - 15:08)
достижение "усложнить себе жизнь" получено
Мы не ищем легких путей. smile.gif Да и усложнение там пара десятков строк кода.
Цитата (chee @ 21.03.2018 - 15:08)
достижение "уменьшить производительность" получено
А вот это не факт. Потому что опционально. Если не включать опцию конвертации, то никакого уменьшения. А если хочется красиво - то да. Но совсем немного.

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
twin
Не, все это фигня. Как только начинаю изменять своим привычкам, так и вылазит всякая хрень. В данном случае хрень - PSR-1 в части свойств. Ваще бесполезная, и даже вредная штука. Хорошо хоть обозначили, как SHOULD.

Причина тут немного глубже. А именно в самом паттерне. Свойства должны называться так же, как поля в таблице. Точка. И плевать на PSR и смешение стилей. Так даже полезнее, ибо видно, где аттрибуты, а где служебные свойства.

Так что не стану я конвертировать.

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Arh
twin
Цитата
Не, все это фигня. Как только начинаю изменять своим привычкам, так и вылазит всякая хрень. В данном случае хрень - PSR-1 в части свойств. Ваще бесполезная, и даже вредная штука. Хорошо хоть обозначили, как SHOULD.

Причина тут немного глубже. А именно в самом паттерне. Свойства должны называться так же, как поля в таблице. Точка. И плевать на PSR и смешение стилей. Так даже полезнее, ибо видно, где аттрибуты, а где служебные свойства.

Так что не стану я конвертировать.

Ну тоже факт.
Ещё когда свойства для классов используешь, тоже их называй в PascalCase как классы "ибо видно")

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
twin
Цитата (Arh @ 21.03.2018 - 18:13)
Ещё когда свойства для классов используешь, тоже их называй в PascalCase как классы "ибо видно")
Если был бы паттерн, который предписывает называть свойства как классы, я так и сделал бы.

Кстати, в HTML змеиная нотация тоже в тренде. А в AR есть такая штука, как "массовое заполнение". Там тоже придется конвертить. А нафига? Не слишком ли много чести этому PSR? smile.gif


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Arh
twin
Цитата
Если был бы паттерн, который предписывает называть свойства как классы, я так и сделал бы.

Паттерн называется "Essence reflector" (Отражатель сути).
Предназначен для явного отражения сути объекта, путём наследования его типа и стиля написания.
Применяется в языках программирования при написании переменных и свойств объекта.
В регистрозависимых языках позволяет использовать одно имя для сущностей разных типов.
Пример на php:

$User = new User();
$user = $User->get(1);
echo $user['id']; // 1



$myFunc = function () {
return myFunc();
};



_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
twin
Цитата (Santehnick @ 22.03.2018 - 13:46)
Они не понимают зачем. Они так делают, только потому что так написано в документации по ларавель.

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

Я прекрасно понимаю, что имел ввиду Фаулер, когда придумывал этот паттерн. Да, он удобен для доменной модели. Но в веб тогда приходится очень многим жертвовать ради неё.

В десктопе все просто. Спроектировал доменную модель, организовал нужные связи, загрузил все в оперативку и радуйся. Хоть трое суток. Базу вообще больше трогать не надо. Есть в этом смысл. В твой компьютер влезло и хорошо. Ни кому не мешает.

Тут же получается, что данные живут не в моделях (объектах), а все равно в базе. И очень уж велик соблазн подтянуть какие то данные в процессе динамически, дабы не засирать оперативку. И с полями тоже самое. Мне становится плохо, когда я представляю себе все запросы моего приложения со звездочками. Это сколько мусора тянется в оперативку... Мне нужен для аутентификации логин и пароль, а мне еще всучат аватарку в бинарном режиме метров на 20 smile.gif Не спасают ни отложенная загрузка, ни пакетная, нифига.

Я почему и говорю, что AR в PHP смотрится уныло. И если работать с ней, то нужно весьма специфически. О чем ни Фаулер, ни Мартин, ни вообще ни кто не пишет. Может кто посоветует адекватный материал по ООП в веб-разработках? Не копипасту с десктопных учебников, а чтоб с учетом этих нюансов?

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

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.