Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasy - czy poprawnie rozumuje?
Forum PHP.pl > Forum > PHP
PMadej
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?
scanner
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
rmn
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
scanner
A co to jest klasa "administracja"

jak już, to kontroler administracji może wywołąc funkcję Create() z API klasy User
rmn
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)
scanner
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]
rmn
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?
scanner
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.