Morgan » 2010.02.22 15:11

Перевел свои функции для работы с бд в стиль опп.
Прошу оценить 'говнястость и логичность кода', и дать дельные советы.
---

НоBый адрес файлов http://xwab.ru/forum/files/swomclass_626.txt и http://xwab.ru/forum/files/swomclass_973.zip

Fuelen » 2010.02.22 18:19

И здесь ты :D

Morgan » 2010.02.22 20:34

Fuelen написал:

И здесь ты :D

я везде, и нигде :-D

Gemorroj » 2010.02.22 21:41

Morgan написал:

// создание обьекта (аргументы аналогичны функции mysql_connect())

у mysql_connect больше параметров, поэтому аргументы не совсем аналогичны.
Не совсем понятно зачем переменная $con

Код:

1
2
return $result;
mysql_free_result($result);

mysql_free_result никогда не выполнится
if(is_integer($msg)) - лучше is_numeric
Могу еще придраться к форматированию кода, и еще в подобных прослойках желательно делать счетчик запросов к БД. Т.е. после успешного mysql_query инкрементить статическую переменную.
В целом, если учитывать что в теме упоминается Учу ООП, результаты, на мой взгляд отличные)
P.S. и еще попробуй использовать конструкцию try throw catch

Morgan » 2010.02.22 22:28

В $con записываются все открытые соединения.
Почему, фри результ не выполнится?
try {...}
Перехват ошибок это?
Читал про это в пхп5 котерова, честно - мало что понял.

Fuelen » 2010.02.22 22:33

После return код дальше в функции/методе не выполняется

Morgan » 2010.02.22 22:36

%)
забыл, надо мозг менять

Morgan » 2010.02.22 22:48

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

Также не понял интерфейсы.
:(

Fuelen » 2010.02.22 23:01

Интерфейс - каркас для классов. Простой набор свойств(вроде) и методов, которые обязательно должны быть созданы в норм классе, иначе ошибка вылезит. Клас может быть составлен из неск. интерфейсов.

Gemorroj » 2010.02.22 23:12

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

Morgan написал:

В $con записываются все открытые соединения.

но более эта переменная никак не ипользуется, и объявлена как приватная.

Morgan » 2010.02.22 23:43

10, хочешь сказать что не логично? Она используется при проверке, а вдруг такое соединение уже открыто.
Добавлено спустя   1 минуту  23 секунды:
9, вот так понятней
// не думаешь книгу начать писать?

Fuelen » 2010.02.23 00:17

Morgan написал:

...
// не думаешь книгу начать писать?

Это ко мне? Если да, те не собираюсь... Гг. У меня опыта мало.
"PHP5 для профессионалов" Эд Леки-Томпсон, Хьяо Айде-Гудман, Алек Коув, Стивен Д.Новицки. Все так хвалят, но я не читал :)

Morgan » 2010.02.23 22:09

Переработал файлы

Nu3oN » 2010.06.15 15:19

Не стал создавать новую тему из за такого вопроса, решил чиркануть тут!

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

Gemorroj » 2010.06.15 15:45

метод отдельно, свойства отдельно. если свойство или метод не будут использоваться извне, то следует всегда делать их приватными.

Nu3oN » 2010.06.15 15:57

т.е так?

грубый пример

Код:

1
lt;?class MyClass {private $BlockOne; private $BlockTwo; private $BlockThree; private function MyMethod($BlockOne, $BlockTwo){$BlockThree = ....//реализация}}?>

Или private $BlockThree лишнее?

Gemorroj » 2010.06.15 17:09

private function MyMethod($BlockOne <- тут $BlockOne - это локальная переменная $BlockOne
private $BlockOne; - тут это свойство класса $this->BlockOne
это 2 абсолютно разные переменные.
еще, по PEAR private и protected свойства и методы следует называть со знака подчеркивания.
и еще, ВСЕ свойства и методы должны начинаться с прописной буквы.
т.е.

Код:

1
span style="color: #0000BB"><?phpclass MyClass { public $blockOne; private $_blockThree; private function _myMethod ($blockOne, $blockTwo) { $this->blockOne; $this->_blockThree; $blockTwo; }}?>