![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Обращаетесь ли вы к переменными класса напрямую? Или же пользуетесь функциями get_variable и set_variable?
|
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 3 Всего: 55 |
Admin
напрямую. т.е
|
|||
|
||||
| Wowa |
|
||||||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Вроде ведь это считается не совсем правильным в ООП. Приведу пример: Есть класс, который отвечает за данные какого-то клиента какого-то банка.
Насколько я понял, именно вышеизложенный подход считается правильным в ООП. Но ведь удобнее вроде бы писать:
Тут я конечно понимаю, что переменная $balance объявлена, как public в классе(в ПХП5 это стало возможно, а var=public). Но все же, я могу ее private сделать. Согласно всяким рекомендациями в книжках так было бы правильнее. Итак. Какой подход все-таки правильнее и почему? Добавлено @ 17:59 Кроме того, если в классе 20 переменных, то не писать ведь на каждую по две функции get и set. |
||||||
|
|||||||
| Irokez |
|
|||
![]() индеец ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1180 Регистрация: 20.10.2004 Репутация: 4 Всего: 53 |
по-моему, если переменная класса является public, то к ней стоит обращаться напрямую ($class->var), а если как private или protected, то стоит написать два метода для обращения и изменения таких переменных ($class->getVar($var_name)), $class->(setVar($var_name, $value))
|
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
Admin
$obj = & new ClassName() $obj -> property, где property объявлена через var как pibluc (в PHP5). Т.е. $obj -> property = 5; print $obj -> property; Внутри класса можно использовать обращение $this ->, т.е. Есть метод asd(); В нем { $this - property = 5; } Вызываем метод $Obj -> asd(); print $obj -> property; выведет 5. использование $this в PHP 5 необхожимо для private & protected |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Mal Hack ну это понятно. Я немного другие имел ввиду.
|
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 8 Всего: 261 |
Admin
Скажи, а зачем писать 2 функции, если можно просто присвоить переменной значение? Смысл? Это не может быть правильным. Это нагрузка на скрипт, причем лишняя... |
|||
|
||||
| penizillin |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 10.11.2004 Репутация: нет Всего: 9 |
по разному, в зависимости от сложности приложения и многих других факторов. например, класс для работы с бд обслуживается исключительно вызовами методов. конечно, может быть это параноя, но я буду спокоен за сохранность данных. а насчет класса, обслуживающего некий элемент списка, имеющий несколько десятков свойств, бывает удобнее использовать группирование в массивы ($objMember->arrProperties['foo']).
|
|||
|
||||
| Opik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1918 Регистрация: 6.10.2004 Где: Рига Репутация: 3 Всего: 55 |
Возьму мануал по PHP5:
http://ee.php.net/manual/en/language.oop5.overloading.php
И так далее. Часто это зависит от конкретной ситуации. |
|||
|
||||
| borisvolfson |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 3.2.2005 Репутация: нет Всего: 3 |
На самом деле в идеале к полям класса нельзя обращаться напрямую, так как им можно присвоить некоректное значение, которое затем нарушит работу класса. Но в реальной жизни можно и нужно, так как при этом не происходит вызов функции, соответственно программа работает быстрее. Что касается, сложных систем, то тут лучше использовать функции...
|
|||
|
||||
| <Spawn> |
|
||||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 2 Всего: 64 |
А какой PHP собирается использоваться? Если 5, то:
Использование:
На счет необходимости использования фукнций - все зависит от того, насколько защищенным должен быть доступ к переменным. Если изменение значений переменных не критичен для внутренней логики класса, то можно обойтись без функций, а если же при модификации значения переменных должна активизироваться какая то логика(например, проверка верности нового занчения), то разумеется нужно писать функцию, в которую уже инкапсулировать необходимый алгоритм. Это сообщение отредактировал(а) <Spawn> - 20.2.2005, 19:00 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Для профи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |