Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: инкапсуляция
 
 автор: beowulf   (18.03.2006 в 12:35)   письмо автору
 
 

Пытаюсь разобраться с инкапсуляцией и возник вот такой вопрос-
Допустим, есть класс. В нем один метод вызывает другие.

<?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();

Хотелось - бы разобраться в этом

   
 
 автор: Axxil   (18.03.2006 в 13:17)   письмо автору
 
   для: 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();

И список можно сортировать. Т.е вспомогательные методы как-бы добавляют классу функциональности.

Короче это я всё к тому что всё зависит от задачи.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования