Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Pytanie o procentową jakość skryptu w OOP
Forum PHP.pl > Forum > Przedszkole
Danone
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. ?>
dr_bonzo
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.
Danone
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. ?>
Amorph
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.
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.