| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Для профи > Работа с переменными в классе |
| Автор: Wowa 26.1.2005, 17:44 |
| Обращаетесь ли вы к переменными класса напрямую? Или же пользуетесь функциями get_variable и set_variable? |
| Автор: Opik 26.1.2005, 17:49 | ||
| Admin напрямую. т.е
|
| Автор: Wowa 26.1.2005, 17:58 | ||||||
Вроде ведь это считается не совсем правильным в ООП. Приведу пример: Есть класс, который отвечает за данные какого-то клиента какого-то банка.
Насколько я понял, именно вышеизложенный подход считается правильным в ООП. Но ведь удобнее вроде бы писать:
Тут я конечно понимаю, что переменная $balance объявлена, как public в классе(в ПХП5 это стало возможно, а var=public). Но все же, я могу ее private сделать. Согласно всяким рекомендациями в книжках так было бы правильнее. Итак. Какой подход все-таки правильнее и почему? Добавлено @ 17:59 Кроме того, если в классе 20 переменных, то не писать ведь на каждую по две функции get и set. |
| Автор: Irokez 26.1.2005, 18:42 |
| по-моему, если переменная класса является public, то к ней стоит обращаться напрямую ($class->var), а если как private или protected, то стоит написать два метода для обращения и изменения таких переменных ($class->getVar($var_name)), $class->(setVar($var_name, $value)) |
| Автор: Mal Hack 26.1.2005, 21:34 |
| 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 26.1.2005, 21:43 |
| Mal Hack ну это понятно. Я немного другие имел ввиду. |
| Автор: Mal Hack 26.1.2005, 21:52 |
| Admin Скажи, а зачем писать 2 функции, если можно просто присвоить переменной значение? Смысл? Это не может быть правильным. Это нагрузка на скрипт, причем лишняя... |
| Автор: penizillin 26.1.2005, 21:55 |
| по разному, в зависимости от сложности приложения и многих других факторов. например, класс для работы с бд обслуживается исключительно вызовами методов. конечно, может быть это параноя, но я буду спокоен за сохранность данных. а насчет класса, обслуживающего некий элемент списка, имеющий несколько десятков свойств, бывает удобнее использовать группирование в массивы ($objMember->arrProperties['foo']). |
| Автор: Opik 27.1.2005, 01:08 | ||
| Возьму мануал по PHP5: http://ee.php.net/manual/en/language.oop5.overloading.php
И так далее. Часто это зависит от конкретной ситуации. |
| Автор: borisvolfson 3.2.2005, 02:37 |
| На самом деле в идеале к полям класса нельзя обращаться напрямую, так как им можно присвоить некоректное значение, которое затем нарушит работу класса. Но в реальной жизни можно и нужно, так как при этом не происходит вызов функции, соответственно программа работает быстрее. Что касается, сложных систем, то тут лучше использовать функции... |
| Автор: <Spawn> 20.2.2005, 18:54 | ||||
А какой PHP собирается использоваться? Если 5, то:
Использование:
На счет необходимости использования фукнций - все зависит от того, насколько защищенным должен быть доступ к переменным. Если изменение значений переменных не критичен для внутренней логики класса, то можно обойтись без функций, а если же при модификации значения переменных должна активизироваться какая то логика(например, проверка верности нового занчения), то разумеется нужно писать функцию, в которую уже инкапсулировать необходимый алгоритм. |