Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Pytanie o procentową jakość skryptu w OOP
Danone
post 29.05.2007, 21:45:41
Post #1





Grupa: Zarejestrowani
Postów: 169
Pomógł: 16
Dołączył: 18.10.2006
Skąd: Olsztyn/Wrocław

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


Witam smile.gif

Jestem na jakimś etapie nauki OOP, strukturalnie już jest ok:)

Mam do Was pytanie, w jakim stopniu ten skrypt poniżej jest Obiektowy? Może być ocena procentowa, jeśli macie jakieś uwagi to też bardzo proszę pisać smile.gif

  1. <?php
  2. class MyClass{
  3. public $host="localhost";
  4. public $login="root";
  5. public $pass="nokia";
  6. public $connection;
  7. public $baza;
  8. public $zapytanie;
  9.  
  10. //Konstruktor do połączenia z bazą...
  11. function __construct(){
  12. $this->connection= mysql_connect("$this->host", "$this->login", "$this->pass");
  13. if(is_resource($this->connection)){
  14. echo "Polaczenie do " .$this->host. " udane";
  15. }
  16. $this->baza= mysql_select_db("dzienniczek");
  17.  
  18. if($this->baza){
  19. echo "<br />ok";
  20. }
  21.  
  22. }
  23. //wyswietlenie wszystkich rekordów w tabeli
  24. public function show(){
  25. $this->zapytanie="SELECT * FROM user";
  26. $this->wybor=mysql_query($this->zapytanie);
  27. echo "<table border=1>
  28. <tr>
  29. <td><a href='klasa_czwarta.php?sort=id'>ID</a></td>
  30. <td><a href='klasa_czwarta.php?sort=imie'>Imię</a></td>
  31. <td><a href='klasa_czwarta.php?sort=nazwisko'>Nazwisko</a></td>
  32. </tr>";
  33. while($row=mysql_fetch_array($this->wybor)){
  34. <tr>
  35. <td>".$row['id']."</td>
  36. <td>".$row['imie']."</td>
  37. <td>".$row['nazwisko']."</td>
  38. </tr>
  39. ";
  40. }
  41. echo "</table>";
  42. }
  43. //funkcja odpowiedzialna za sortowanie danych
  44. public function sort(){
  45. if(isset($_GET['sort'])){
  46. $sortowanie="SELECT * FROM user ORDER BY ".$_GET['sort']."";
  47. $sort=mysql_query($sortowanie);
  48. echo "<table border=1>
  49. <tr>
  50. <td bgcolor=red>ID</td>
  51. <td bgcolor=red>Imie</td>
  52. <td bgcolor=red>Nazwisko</td>
  53. </tr>";
  54. while($row2=mysql_fetch_array($sort)){
  55. <tr>
  56. <td>".$row2['id']."</td>
  57. <td>".$row2['imie']."</td>
  58. <td>".$row2['nazwisko']."</td>
  59. </tr>";
  60. }
  61. }
  62. }
  63. }
  64.  
  65.  
  66. $test=new MyClass;
  67. $test->show();
  68. $test->sort();
  69. ?>
Go to the top of the page
+Quote Post
dr_bonzo
post 29.05.2007, 21:56:59
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


0%

1. nie ocenia sie tego procentowo, co nazwyzej: jest dobra, ujdzie, i 'czemu-nie-dales-tego-szitu-na-przedszkolu' (edit: ja myslalem ze to jest w forum OOP tongue.gif)
2. nazwa 'MyClass' nic nie mowi o przeznaczeniu klasy
3. jest niezykozystywalna (na stale zapisane parametry polaczenia z baza)
4. czemu funkcja 'sort' wyswietla dane? a nie sortuje
5. powielasz kod wyswietlania danych
6. polaczenie z baza powinno byc w osobnej klasie z ktorej bys korzystal

itd.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Danone
post 29.05.2007, 22:03:15
Post #3





Grupa: Zarejestrowani
Postów: 169
Pomógł: 16
Dołączył: 18.10.2006
Skąd: Olsztyn/Wrocław

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


Jeśli chodzi o ten podpuntk?

3. jest niewykorzystywalna (na stale zapisane parametry polaczenia z baza)

Poczytałem trochę i czy teraz połączenie z bazą jest odpowiednie? Parametry można zmieniać.


  1. <?php
  2. Class MYSQL{
  3.  
  4. public $polaczenie;
  5.  
  6. function __construct($dbHost, $dbUser, $dbPass){
  7. $this->DBHost =$dbHost;
  8. $this->DBUser =$dbUser;
  9. $this->DBPass =$dbPass;
  10.  
  11. }
  12.  
  13. function connect(){
  14. $this->polaczenie = mysql_connect($this->DBHost, $this->DBUser, $this->DBPass);
  15.  
  16. if($this->polaczenie){
  17. echo "Jestes polaczony jako: " .$this->DBUser. " :)";
  18. }
  19. }
  20. }
  21.  
  22. $DB= new MYSQL(localhost, root, nokia);
  23. $DB->connect();
  24. ?>


Ten post edytował Danone 29.05.2007, 22:34:27
Go to the top of the page
+Quote Post
Amorph
post 30.05.2007, 05:48:56
Post #4





Grupa: Zarejestrowani
Postów: 309
Pomógł: 0
Dołączył: 6.06.2006
Skąd: include('root/europe/ poland/szczecin.php');

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


Główną zaletą OOP jest skalowalność, i podział w którym każda klasa odpowiada za obiekt lub grupę obiektów. W twoim wypadku napisałeś klasę która nic nie ma związanego z OOP oprócz tego że jest klasą smile.gif
Powinieneś napisać jedną klasę odpowiadającą za obsługę bazy danych, drugą za wyświetlanie danych jakie zostaną do niej przypisane....
Zobacz ile funkcji musiałbyś napisać, jeśli chciałbyś wyświetlać dane np. w takich kolejnościach:
1. id, imie, nazwisko
2. id, nazwisko, imie
3. imie, nazwisko, id
4. imie, id, nazwisko
itd.
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: 24.07.2025 - 17:57