хороший способ взаимодействия с MySQL? - PullRequest
0 голосов
/ 28 августа 2011

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

Table1: id, identifier, other_attributes
Table2: id, identifier, other_attributes
Table3: id, table1_id, table2_id // this connects table 1 and 2.

Итак, я создал объект для table1 и table2, разрешив такие вещи, как $table = new table1($id); и $table->getName(); или $table->setName();

Однако я не совсем уверен, что это лучший способ? И если это так, то лучше ли будет создать еще один объект для table3? или есть лучший способ сделать это?

Наконец, то, что я сделал, это объединение методов получения и установки, то есть $table->name('somename'); установит имя, а $table->name(); получит его. Разумно ли их объединять? или лучше их разделить?

хош

Ответы [ 3 ]

1 голос
/ 28 августа 2011

Я бы использовал объекты для каждого реально используемого объекта (как-то так называется название ...).

Например, у меня есть один пользовательский класс, который использует данные из трех разных таблиц БД.Таблицы отношений n: m должны быть реализованы в соответствии с их именами.Имея таблицу 'user_has_address', я бы реализовал SQL-запросы и для пользовательского класса (который использует класс Address).Но данные из таблицы, такой как «company_has_employees», будут находиться в классе компании.

И как назвать ваши методы получения и установки в PHP - это вопрос соглашения кодирования (например, вкомпания или только ваша).Они не нужны вообще в PHP при использовании магических методов (например, __ call () ), но, как отмечает @JJ, это облегчит тестирование.

1 голос
/ 28 августа 2011

Я бы также настоятельно рекомендовал getName () и setName (). Причина проста: хорошая IDE может избежать ввода текста.

Например, вы набираете:

$name = 'str';
$table->setN

, и тогда может завершиться завершение кода, что может привести к $ table-> setName ($ name). Если у вас есть только метод name ($ name = null), IDE не может быть уверена, предлагать или нет аргумент. Кроме того, veeeery обычно использует setX () / getX (), что помогает понять ваш код.

1 голос
/ 28 августа 2011

Если бы я реализовывал это, я бы не использовал name('somename') и name() в качестве установщиков и получателей, как вы это сделали.Это облегчает запоминание функций, однако, на мой взгляд, это также значительно облегчает поиск ошибок кодирования.Вы можете случайно ввести .name (), когда на самом деле имеете в виду .name ('') и т. Д., И найти такие ошибки в коде может быть сложно.Может быть, я предвзятый - у меня сильный опыт Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...