Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Optymalizacja kodu.
Forum PHP.pl > Forum > Przedszkole
Wicepsik
  1. class all{
  2.  
  3. private $pdo; // Połączenie mysql!
  4. public $error = 0;
  5.  
  6. public function _mysql(){
  7. try{
  8. $this->pdo = new PDO('mysql:host=localhost;dbname=webserv;', 'root', '',
  9. array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
  10. }catch(PDOException $e){
  11. echo 'Połączenie z bazą nie mogło zostać utworzone!';
  12. }
  13. }
  14.  
  15. public function register($user, $pass, $passt, $email){
  16.  
  17. if(!empty($user)){
  18. if(!preg_match('/^[a-zA-Z0-9 ]+$/', $user)){
  19. $err['user'] = 'Błędny nick! Nick może zawierać litery, liczby i spacje.';
  20. $this->error++;
  21. }else{
  22. if($this->reg('user', $user) == true){
  23. $err['user'] = 'Podany nick jest zajęty! Proszę wybrać inny.';
  24. $this->error++;
  25. }
  26. }
  27. }else{
  28. $err['user'] = 'Nie wypełniono pola NICK!';
  29. $this->error++;
  30. }
  31.  
  32. if($pass == $passt){
  33. if(!empty($pass)){
  34. if(!preg_match('/^[a-zA-Z0-9 ]+$/', $pass)){
  35. $err['pass'] = 'Błędne hasło! Hasło może zawierać litery, liczby i spacje.';
  36. $this->error++;
  37. }
  38. }else{
  39. $err['pass'] = 'Nie wypełniono pola HASŁO!';
  40. $this->error++;
  41. }
  42. }else{
  43. $err['pass'] = 'Hasła nie są takie same!';
  44. $this->error++;
  45. }
  46.  
  47. if(!empty($email)){
  48. if(!preg_match('/^[a-zA-Z0-9\.\-\_]+\@[a-zA-Z0-9\.\-\_]+\.[a-z]{2,4}$/D', $email)){
  49. $err['email'] = 'Błędny email!';
  50. $this->error++;
  51. }else{
  52. if($this->reg('email', $email) == true){
  53. $err['email'] = 'Na podany email już zostało zarejestrowane konto!';
  54. $this->error++;
  55. }
  56. }
  57. }else{
  58. $err['email'] = 'Nie wpisałeś emaila!';
  59. $this->error++;
  60. }
  61.  
  62. if($this->error == 0){
  63. echo 'Prawidłowo!';
  64. }else{
  65. foreach($err as $value){
  66. echo '<br/>'. $value;
  67. }
  68. }
  69.  
  70. }
  71.  
  72. /* Funkcja sprawdzająca czy user oraz email są użyte w bazie! */
  73. public function reg($which, $value){
  74.  
  75. switch ($which){
  76. case 'email' :
  77. $con = $this->pdo->prepare('SELECT `email` FROM `users` WHERE `email` = :m');
  78. break;
  79. case 'user' :
  80. $con = $this->pdo->prepare('SELECT `login` FROM `users` WHERE `login` = :m');
  81. break;
  82. }
  83.  
  84. $con->bindValue(':m', $value, PDO::PARAM_STR);
  85. $con->execute();
  86. $count = $con->rowCount();
  87. if($count > 0){
  88. return true;
  89. }else{
  90. return false;
  91. }
  92.  
  93. }
  94. }


Czy da się zoptymalizować kod ? Bo tutaj dużo ifów jest ;P
erix
Ifów trochę tu trzeba, ale nie byłoby konieczności zagnieżdżania, gdybyś korzystał z wyjątków. ;]

Poza tym, dlaczego zestawienia połączenia nie trzymasz w konstruktorze, tylko pseudoprywatnej metodzie _mysql?
vokiel
Jakbyś zaczął korzystać z Exceptions to byłoby ich mniej, a przynajmniej bardziej czytelnie. Ale zależy to też od założeń, bo jeśli chcesz mieć wszystkie błędy na raz. Czyli w przypadku kiedy użytkownik popełni x błędów, żeby otrzymał info o wszystkich to niestety wyjątki się za bardzo nie przydadzą, bo dostanie info tylko o pierwszym.
Także, w zależności od zastosowania - wyjątki jeśli pierwszy błąd przerywa, ify jeśli zbierasz info o wszystkich.
Wicepsik
Cytat(erix @ 22.08.2009, 22:41:33 ) *
Poza tym, dlaczego zestawienia połączenia nie trzymasz w konstruktorze, tylko pseudoprywatnej metodzie _mysql?


Cały czas się uczę i czasami zapominam o podstawowych rzeczach sciana.gif
Już zmienione i dzięki za pokazany błąd wstydnis.gif

@vokiel
Wolałbym pokazywać wszystkie błędy, więc zostają ify. Myślałem że jest prostsze rozwiązanie.
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.