Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Klasy - czy poprawnie rozumuje?
PMadej
post 28.03.2004, 19:42:18
Post #1


Vice-Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 395
Pomógł: 0
Dołączył: 7.08.2003
Skąd: Kielce

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


Projektuje klase do obslugi uzytkownikow i z tego co sie dowiedzialem o OOP nalezy rozdzielic logike od wygladu. Podzielilem ja wiec na dwie klasy user i showuser. Teraz mam takie pytanie czy taki podzial metod miedzy klasy jest prawidlowy i czy wogole dobrze rozumiem podejscie do oop?

Ponizej sa metody tych klas:
Kod
class User:

-dodaj usera

-usun usera

-edytuj usera

-zapisz dane po edycji

-zmien uprawnienia

-zmien status konta

-wyslij mail aktywujacy



class ShowUser:

-wyswietl formularz dodania

-wyswietl formularz edycji (podobne do dodania ale wypelnione danymi)

-wyswietl informacje o userze

-wyswietl liste userow

-wyswietl potwierdzenie usuniecia


Dodam ze to pierwszy projekt klas i wg mnie nie do konca poprawny dlatego prosze o opinie.

Jeszcze jedno pytanko te dwie klasy powinienem polaczyc ze soba przez delegacje czy jakos inaczej?


--------------------
Go to the top of the page
+Quote Post
scanner
post 29.03.2004, 11:05:16
Post #2





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Musisz spojrzeć na klasy jak na świat rzeczywisty - tak jak pisze nalfein w swoim arcie.

Masz obiekt "Użyszkodnik"
Obiekt ma własnosci:
- login
- haslo
- id profilu
- email
- date powstania

Obiekt ma metody:
- dodaj
- usun
- zmien
- usun
- aktywuj
- pokaz

Nie mysl kategoriami wygladu.
budujac wizualiazję robisz(pseudokod)[php:1:fa622612ee]<?php
// ...
$arrUser = $User->pokaz( $_SESSION['id'] );
// Metoda pokaz zwraca tablicę ( 'id' => 3, 'login'' => 'scanner', ... );
$Smarty->assign( $arrUser );
?>[/php:1:fa622612ee]

Ja to tak widzę.

Update:
klasa User -> Model
klasa smarty-> View
pokazany kod -> Controller


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
rmn
post 29.03.2004, 11:57:58
Post #3





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 19.02.2004
Skąd: Piaseczno

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


Cytat
Musisz spojrzeć na klasy jak na świat rzeczywisty - tak jak pisze nalfein w swoim arcie.  

Wobec tego metdoy takie jak dodaj, usun powinny byc raczej w kalsie typu Administracja?
scanner mogłbyś spojrrzec tutaj, prosze?
http://forum.php.pl/viewtopic.php?t=14178
Go to the top of the page
+Quote Post
scanner
post 29.03.2004, 12:03:46
Post #4





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




A co to jest klasa "administracja"

jak już, to kontroler administracji może wywołąc funkcję Create() z API klasy User


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
rmn
post 29.03.2004, 12:09:09
Post #5





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 19.02.2004
Skąd: Piaseczno

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


class Administracja
wlasnosci:
wszyscy, admini, moderatorzy, inne grupy - tablice obiektow klasy user;
metdody:
GetList(grupa) - zwraca tablice odpowiedniej grupy userow
AddUser, UpdateUser, DeleteUser idt(Wszsytkie pracuja na obiektach klasy User)
Go to the top of the page
+Quote Post
scanner
post 29.03.2004, 12:54:35
Post #6





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Sorki, ale bzdura.
Obiektem (modelem) jest User.
administracja jest kontrolerem, ktory wywoluje z parametrami odpowieenie metody usera i wysyla dane do wyswietlenia.

Przykłądowo admin.controller.php:
[php:1:22c276780d]<?php
$user = new User();
if( $user->GetOne( $_SESSION['id'] ) )
{
$user->level = 'moderator';
$user->Update();
}
else
{
$Smarty->assign( 'errorMsg', 'No such user' )
$Smarty->display( 'change_user_level.tpl' );
}
?>[/php:1:22c276780d]user.class.php[php:1:22c276780d]<?php
class User
{
var id = 0;
var level = 'Guest';

// ....

function GetOne( $intID )
{
$userdata = $ADODB->GetOne(' SELECT * FROM users WHERE id='.intval($intID) )
if( /* sprawdzamy, czy rekordset jest */ )
{
$this->level = $userdata['level'];
return true;
}
else
{
return false;
}
}
function Update()
{
$sql = "UPDATE users SET level = '".$this->level."' WHERE id = ".$this->id;
}
}
?>[/php:1:22c276780d]


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
rmn
post 29.03.2004, 13:14:45
Post #7





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 19.02.2004
Skąd: Piaseczno

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


scanner thx za kod, przyda sie:)
Nie twierdzę, że moja propozycja jest dobra(z tego co piszesz to jest fatalna a masz o tym napewno wieksze pojecie ode mnie;) ale czy mogłbys npisac czemu uwazasz ze jest bzdurna?
Go to the top of the page
+Quote Post
scanner
post 29.03.2004, 13:23:56
Post #8





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Cytat
class Administracja
a do zarządzania newsami bedziesz mial drugą class administracja?
Cytat
wlasnosci:
wszyscy, admini, moderatorzy, inne grupy - tablice obiektow klasy user;
Własnością jest cecha obiektu, a nie wartość cechy. Własnością obiektu człowiek nie jest "blondyn" tylko "kolor włosów"
Cytat
metdody:
GetList(grupa) - zwraca tablice odpowiedniej grupy userow
AddUser, UpdateUser, DeleteUser idt(Wszsytkie pracuja na obiektach klasy User)
Po co User W nazwie?
po co pisać $User->AddUser() skoro wystarczy $user->Add()?

$user->Add()
$news->Add()
$fo->add() - pomijając dziedziczenie, kazde z tych add odnosi sie do metody innego obiekty, która ma inny kod smile.gif


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 20.07.2025 - 11:26