Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak zawsze Klasy...
KaGe
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 27.04.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


[php:1:78eaaa3023]<?php
Class Object
{
var $db_data;
var $data;
var $table;

function Object($table = null, $data = array(), $db_data = array())
{
$this->table = $table;
$this->data = $data;
$this->db_data = $db_data;
}

function SetData($data = array())
{
$this->data = $data;
}

function ReturnStringAND($data=null)
{
if (!is_array($data))
{
$data = $this->data;
}
$string = array();
foreach($data as $key => $value)
{
if (!is_numeric($value))
{
$value = "'$value'";
}
$string[] = "$key = $value";
}
$string = implode(" AND ", $string);
return $string;
}

function ReturnString($data=null)
{
if (!is_array($data))
{
$data = $this->data;
}
$string = array();
foreach($data as $key => $value)
{
if (!is_numeric($value))
{
$value = "'$value'";
}
$string[] = "$key = $value";
}
$string = implode(", ", $string);
return $string;
}

function ReturnFields()
{
$fields = array();
foreach($this->data as $key => $value)
{
$fields[] = "$key";
}
$fields = implode(",", $fields);
return $fields;
}

function ReturnValues()
{
$values = array();
foreach($this->data as $key => $value)
{
if (!is_numeric($value))
{
$value = "'$value'";
}
$values[] = "$value";
}
$values = implode(",", $values);
return $values;
}
}


Class User extends Object
{
var $data;

function User($data = array())
{
$this->table = "users";
$this->data = $data;
}
}


Class Session
{
function Login($user)
{
}
}

Class MySQL
{
var $host = "localhost";
var $login = "login";
var $password = "pass";
var $name = "name";

function MySQL()
{
mysql_pconnect($this->host, $this->login, $this->password);
mysql_select_db($this->name);
}
}

Class Database extends MySQL
{
function Get($object)
{
$o = mysql_query("SELECT * FROM " . $object->table . " WHERE " . $object->ReturnString());
$data = mysql_fetch_assoc($o);
$object->setdata($data);
return new Object($object->table, $data, $data);
}

function Add($object)
{
mysql_query("INSERT INTO " . $object->table . " (" . $object->ReturnFields() . ") VALUES (" . $object->ReturnValues() . ")");
return new Object($object->table, $object->data, $object->data);
}

function Save($object)
{
mysql_query("UPDATE " . $this->table ." SET " . $object->returnString() . " WHERE " . $object->returnStringAND($object->db_data));
return new Object($object->table, $object->data, $object->data);
}

function Delete($object)
{
mysql_query("DELETE FROM users WHERE " . $object->returnString());
return mysql_affected_rows();
}
}

?>[/php:1:78eaaa3023]

Mam tu podział na to, że mam oddzielne klasy dla każdej "warstwy" strony. Czy moje rozwiązanie jest jak by to nazwać... wydajne? bo w sumie to funkcjonalne w jakiś sposób na pewno...

Jest jeszcze kwestia logowania użytkowników. Mianowicie zastanawiam się, czy funkcje dot. logowania user dać jemu samemu do klasy - User, czy też zrobić klasę Session i tam wrzucić logowanie itd - natomiast sprawdzanie danych itd.. odbywac się będzie właśnie w metodach Session. Czy to jest dobre rozwiązanie?
Go to the top of the page
+Quote Post
patrycjusz
post
Post #2





Grupa: Zarejestrowani
Postów: 263
Pomógł: 0
Dołączył: 13.07.2003
Skąd: wawa

Ostrzeżenie: (0%)
-----


hmmm...
i jeszcze raz hmm...
kompletnie nie wiem o co w tej klasie ci chodzi (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif) (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif) (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif) a co do wydajnosci jej to wydaje mi się że hmm... nie no napewno mozna to zrobić szybciej (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) )
ale odpowiem chociarz na to drugie pytanie,
po pierwsze OOP jak sama nazwa wskazuje jest ideą obiektów,
w pewnej książce czytałem doskonały przykład o tym jak rozpisywać projekt klas,
patrz...
mamy do zrobienia system obslugi firmy,
wiemy ze będą obiekty związane z zarządzaniem użytkownikami , i z zarzadzaniem projektami itd, wiemy ze obiekty związane z zarządzeniami użytkownikami można dalej podzielić na obiekty związane z danymi użytkownika a jego logowaniem, wiemy że obiekty związane z danymi użytkownika można podzielić na formularze do obsługi tych danych i na obiekty zajmujące się komunikacja z baza danych itd itd, w książce tej było bardzo ładne podsumowanie, mniejwięcej tak,
" i dochodzimy do wniosku że ten obiekt jest tak prosty że nie będzie problemów z jego napisaniem" (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) pewnie coś przekręciłem ale idee starałam się zachować,
otóż,
każdy obiekt powinnien wykonywac jak najmniejszą ilość czynności, włąsciwie powinnien wykonywać jedną określoną czynność i nic więcej,
więc nijak tutaj widzę powiązanie metod służących do autoryzacji z metodami do obsługi dodawania użytkowników czy też sesji.
Odsyłam do googielków i proponuje dogłębnie przestudiowac temat OOP i również proponuję MVC (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Pozdrawiam patS
Go to the top of the page
+Quote Post
KaGe
post
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 27.04.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


2 KWESTIE

1)
Ok... powiedzmy, ze podzielimy wszystko tak jak w realnym świecie... czlowieka na organy i cechy, kazdy organ na tkanki, komorki, orgranelle, cząstki, atomy itd...
ok...

ale jak złożyć potem tego człowieka? rozumiem, że kolejne klasy muszą po sobie dziedziczyć - nadrzędna z podrzędnej - to jest oczywiste. Ale co zrobić, gdy taki np. człowiek słada się z kilku organów tej samej klasy - czyli obiektów danej klasy? - nie może przecież dziedziczyć po kilku rzeczach naraz... - wiec jak? jak go skonstuowac?

czy tak?

[php:1:f70718ae2a]<?php
Class atom
{
właściwośći i metody...
}

Class czastka extends atom
{
właściwośći i metody...
}
?>[/php:1:f70718ae2a]

i tu pojawia się pierwszy problem - jak zrobić, żeby cząstka mogła się składać z więcej niż jednego atomu? - bo później organella będzie składała się tak samo - z wielu cząstek

Czy ktoś może mi pomóć?

2) to tyle jeśli chodzi o podzielność - teraz mam pytanko jeśli chodzi o podział zadań. w moim przykładzie widać to dokładnie - można przestudiować biologię i zrozumieć, że w sumie każda rzecz ma tylko 3 sprawy - żyć, być podzielną oraz laczyc sie z inną - taką samą - by tworzyć obiekt wyższej klasy.

W tym punkcie sprawa tyczy się samego życia - łatwo jest to zrobić w przypadku prostej komórki bo byloby to cos takiego:

[php:1:f70718ae2a]<?php
Class organella
{
metody - korzystanie z zasoboow i zwracanie produktoow -
wlasciwosci - cechy konkretnej organelli - typ, nazwa itd...
}

Class komoorka - i tu jakos zrobic, zeby skladala sie z kilku organelli
{
metody - tak jak w przypadku organelli - zyje i korzysta z zasoboow swoich obiektoow podrzednych, ktore ja tworza
wlasciwosci - j/w/ nazwa itd...
}

?>[/php:1:f70718ae2a]

- jesli dobrze mi sie zdaje to jest to chyba ok?
A jak to przelozyc na problematyke serwisu internetowego ? - oraz czy tak nie stwarzamy sobie mega-skomplikowanej struktury, ktoora tak naprawde nie wymaga mega - komplikacji?

Czy macie jakies linki do (najlepiej polskich) stron o tym?
Go to the top of the page
+Quote Post
boloo77
post
Post #4





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 1.10.2003
Skąd: Mikołów

Ostrzeżenie: (0%)
-----


Sprobuje odpowiedzieć na pkt 1. Przynajmniej jak ja to bym widział

[php:1:505b083a48]<?php
Class atom
{
//właściwośći i metody...
}

Class czastka
{
var $atomy=array();//tablica obiektow atom z któych składa się cząstka
//właściwośći i metody (w tym sterujące atomami - dołączanie atomów usuwanie itp)...
}

Class Komorka
{
var $czastki=array();//tablica obiektów cząstek z których składa się komórka
//właściwości i metody (w tym sterujące cząstkami w komórce)...
}
?>
[/php:1:505b083a48]

Oczywiście może powstać konieczność określenia pozycji atomu w cząstce. Wtedy możemy zrobić to tak:
[php:1:505b083a48]<?php
class atom_w_czastce extends atom
{
var $pozycja_w_czastce;
}
//i teraz
Class czastka
{
var $atomy=array();//tablica obiektow atom_w_czastce z których składa się cząstka (wraz z określeniem pozycji atomu w cząstce)
//właściwośći i metody (w tym sterujące atomami - dołączanie atomów usuwanie itp)...
}
?>[/php:1:505b083a48]

lub ew.
[php:1:505b083a48]<?php
class atom_w_czastce
{
var $atom;//obiekt atom
var $pozycja_w_czastce;
}
//i teraz
Class czastka
{
var $atomy=array();//tablica obiektow atom_w_czastce z których składa się cząstka (wraz z określeniem pozycji atomu w cząstce)
//właściwośći i metody (w tym sterujące atomami - dołączanie atomów usuwanie itp)...
}
?>[/php:1:505b083a48]
Mam nadzieje że nie zamieszałem... (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 23:23