|
|
|
| Пытаюсь разобраться с инкапсуляцией и возник вот такой вопрос-
Допустим, есть класс. В нем один метод вызывает другие.
<?php
class MyClass
{
function MyFunc()
{
$this->a();
$this->b();
$this->v();
}
function a()
{
echo 1;
}
function b()
{
echo 2;
}
function v()
{
echo 3;
}
}
$obj=new MyClass;
$obj->MyFunc();
?>
|
Насколько корректен такой подход?Не нарушает ли это инкапсуляции? Все работает, но, возможно, более правильно вызывать методы класса по отдельности?
т.е
$obj=new MyClass;
$obj->a();
$obj->b();
$obj->v();
|
Хотелось - бы разобраться в этом | |
|
|
|
|
|
|
|
для: beowulf
(18.03.2006 в 12:35)
| | Нормальный подход.
Если у вас методы a b v служебные и нужны только этому классу и не вызываются извне то можно их сделать private. Вообще ООП поощряет максималную "закрытость" классов.
Вариант
$obj=new MyClass;
$obj->a();
$obj->b();
$obj->v();
|
Имеет право на существование когда между методами идут какие-либо действия, которые на эти методы влияют (например параметры передают в них).
У меня например часто используется такая штука. Есть в классе метод котрый выводит какой-нить список. $class->list(); И есть куча вспомогательных методов. Например интефейс поиска. Теперь достаточно написать
$obj->search();$obj->list();
| и в списке можно проводить поиск.
$obj->sort();$obj->list();
|
И список можно сортировать. Т.е вспомогательные методы как-бы добавляют классу функциональности.
Короче это я всё к тому что всё зависит от задачи. | |
|
|
|