Подскажите по ООП

tarya

Новичок
Добрый день.

Прошу немного научить по ООП. Я новичек.

Для примера сразу немного кода:

PHP:
class Test {
    
    public $data;//Массив с данными о полях формы
    
    public function __construct($data) {
        $this->data = $data;
    }
    
    public function Form(){
       //На основе  $this->data строится форма -> $form
        echo $form;
    }
    
    public function Some(){
        $this-> ...тут чтото делаем...   
        $this->Form();
    }
}

$data = array(...массив данных описания формы...);

$a = new Test($data[a]);
$b = new Test($data[b]);

$a->Form();
$b->Form();

$b->Some();
Все просто. Есть класс, в нем метод который строит форму. Какие поля строить берутся из массива $data.

Если сейчас посмотреть на то что выдадут строки
PHP:
$a->Form();
$b->Form();
Это две разные формы. Так как использовались разные объекты, а те в свою очередь имели свои входящие данные.

Вопрос в чем. Как сделать так чтоб вызывая метод $b->Some(); из под объекта $b - который имея внутри свойства $this->data данные из массива $data[б] - своего рода я это данные обработаю, но построю форму на основе данных из $data[a]?

$b->Some($a); - ??? так что ли только поступать? А уже в методе:

PHP:
...

public function Some($a){
        $this-> ...тут чтото делаем...   
        $a->Form();
    }

....
Как быть если нужно обратиться к данным которые есть но в другом объекте?

Спасибо за ваше время и советы.[/b]
 

Вурдалак

Продвинутый новичок
А можно описать реальную ситуацию, а не такую непонятную, если уж ты заикнулся об ООП?

P.S. Кстати, замечу, что методы по своей сути — действия и их принято обозначать каким-то глаголом.
 

tarya

Новичок
Извиняюсь за возможное непонятное описание, я еще не достиг просветления. Возможно спрашиваю глупости, просто я еще учусь.

Если реальную ситуацию описать то в двух словах так. Есть система управления данными. В системе разные инструменты. Получается что данные о всех инструментах лежат в одной таблице (А), в ней название, описание, и все такое. Когда мы ходим по этим данным в виде древовидной структуры в каждом инструменте подгружаются свои данные и настройки. Мы с ними работает. Открывается форма и мы вводим данные или их редактируем, или удаляем. Но тут же есть возможность настроить какие поля у нас например подлежат редактированию, потому мы открываем форму, по сути эта форма строится не на данных инструмента, а на данных описания из таблицы что я писал выше (А). Но так как она вызывается все из под того же объекта что описывает форму инструмента, а не форму описания инструмента, то небольшая путаница.

Я думаю так еще не понятнее. :)

Сейчас если все откинуть это выглядит примерно так:
PHP:
$document = new Sections($data['admin']);
$document->GetDocument($_GET['s']);
//тут грузится (инклудится) сам документ - инструмент, со своими данными, классами и интрументами. 
//А в нем есть..

global $document;
$item = new Admin($data['feedback']);
$item->standartActions($document);

//А в standartActions есть настройка самого документа ($document)

...

public function standartActions($document){
...
$this->docSetting($document);
...
}

//А в docSetting уже строится форма

public function docSetting($document){
$this->addHtml("body", $document->form());
}
Но я думаю так неправильно делать. Потому и хочу научиться, но чтото нигде ничего подобного не могу прочитать.
Спасибо.
 

Вурдалак

Продвинутый новичок
PHP:
$document = new Sections($data['admin']);
— ошибка хотя бы в том, что используются абсолютно неправильные названия. Во-первых, класс с именем во множественном числе само по себе довольно странно (это же получается просто массив Section'ов), во-вторых, массив section'ов оказывается ... документом. Это как?

PHP:
$document->GetDocument($_GET['s']);
— документ имеет метод «получить документ»? Это как?

Повторюсь, что до тех пор, пока имена методов будут существительными, то назвать это код нормальным уже нельзя.
 

Духовность™

Продвинутый новичок
Если реальную ситуацию описать то в двух словах так. Есть система управления данными. В системе разные инструменты. Получается что данные о всех инструментах лежат в одной таблице (А), в ней название, описание, и все такое. Когда мы ходим по этим данным в виде древовидной структуры в каждом инструменте подгружаются свои данные и настройки. Мы с ними работает. Открывается форма и мы вводим данные или их редактируем, или удаляем. Но тут же есть возможность настроить какие поля у нас например подлежат редактированию, потому мы открываем форму, по сути эта форма строится не на данных инструмента, а на данных описания из таблицы что я писал выше (А). Но так как она вызывается все из под того же объекта что описывает форму инструмента, а не форму описания инструмента, то небольшая путаница.
с ума сойти. Я , читая эту писанину, чуть мозг не сломал. ООП с такого сложного задания нельзя начинать изучать.
 

tarya

Новичок
Все очень просто на самом деле и все давно работает. Но так как мне хочется научиться правильно программировать а не как попало, то конструкция:

PHP:
$a = new Test($data[a]);
$b = new Test($data[b]);

$a->Form();
$b->Some($a);


//где
public function Some($a){
        $this-> ...тут чтото делаем...   
        $a->Form();
    }
Мне кажется так неправильно. Хотелось бы научиться делать правильно. Такая штука у меня только в одном месте, потому и гложет.

Мне также кажется делать так:
PHP:
public function Some(){
$a = new Test($GLOBALS[data][a]);
        $this-> ...тут чтото делаем...   
        $a->Form();
    }
...тоже неправильно.

Одним словом я всего лишь учусь. Какие то моменты мне откровенно непонятны но я не стесняюсь этого :)
 

varan

Б̈́̈̽ͮͣ̈Л̩̲̮̻̤̹͓ДͦЖ̯̙̭̥̑͆А͇̠̱͓͇̾ͨД͙͈̰̳͈͛ͅ
я тоже ниасилил
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
надо начать не с ООП, а с понимания задачи
надо использовать слова, значение которых в тексте очевидно
для разделения фраз надо использовать знаки препинания или перенос строки
если этого нет - гарантировано автор в задаче не разобрался

> В системе разные инструменты.
Плоскогубцы, отвертки, молотки?
>название, описание, и все такое
это как "вопрос жизни и все такое"? для понимания нужна схема таблицы ?

>ходим по этим данным в виде древовидной структуры в каждом инструменте подгружаются свои данные и настройки. Мы с ними работает.
какие данные? какая структура? какие инструменты? как подгружаются? какие настройки? кто и как как работает?
ты всегда безграмотен и нигде тебя не понимают?
 
Сверху