![]() |
![]() ![]() |
![]() |
![]()
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? -------------------- |
|
|
![]()
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 - 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 -------------------- |
|
|
![]()
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 |
|
|
![]()
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 -------------------- |
|
|
![]()
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) |
|
|
![]()
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] -------------------- |
|
|
![]()
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? |
|
|
![]()
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:
Własnością jest cecha obiektu, a nie wartość cechy. Własnością obiektu człowiek nie jest "blondyn" tylko "kolor włosów"wszyscy, admini, moderatorzy, inne grupy - tablice obiektow klasy user; Cytat metdody:
Po co User W nazwie?
GetList(grupa) - zwraca tablice odpowiedniej grupy userow AddUser, UpdateUser, DeleteUser idt(Wszsytkie pracuja na obiektach klasy User) 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 ![]() -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.07.2025 - 11:26 |