Class efficiëntie [code review]
Aangezien het mijn eerste keer is dat ik, uit mezelf, begin met het bouwen van classes, zou ik graag willen weten of en hoe hij efficiënter kan?
Alvast bedankt!
Class 1: Mysql connection
Class 2: password beveiligin
class 3: Email verzenden - nog niet helemaal af..
class 4: Email validatie
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
class mysql_con{
function mysql($mysql){
$db_host = "place_your_db_host";
$db_username = "place_your_username";
$db_pass = "place_your_db_password";
$db_name = "place_your_db_name";
if (mysql_connect("$db_host","$db_username","$db_pass") == false){
return false;
}
if(mysql_select_db("$db_name") or die(mysql_error()) == false){
return false;
}
}
}
class pass_secur{
function pass($pass){
$pepper = uniqid() - 1002;
$salt = 'abcdefghijklmnopqrstuvwxzyABCDEGHIJKLMNOPQRSTUVWXYZ1234567890';
$pass = $pass = $salt.sha1($_POST['password']).$pepper;
}
}
class setmail{
function settingmail($setmail){
$to = "bob@domain_example.co.za";
$subject = "Email from website";
$message = $_REQUEST["body"];
$subject = $_REQUEST["subject"];
$email = $_REQUEST["email"];
function is_valid_email($email) {
return preg_match('#^[a-z0-9.!\#$%&\'*+-/=?^_`{|}~]+@([0-9.]+|([^\s]+\.+[a-z]{2,6}))$#si', $email);
}
if (!is_valid_email($email)) {
echo 'Sorry, invalid email';
exit;
}
$headers = "From: $email";
mail($to, $subject, $message, $headers);
echo "Thanks for submitting.";
}
}
class email_validate{
function validate_email($val_mail){
if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $str)) return false;
list($usr, $domain) = split('@', $str);
if (!@checkdnsrr($domain, 'MX')) return false;
return true;
}
}
?>
class mysql_con{
function mysql($mysql){
$db_host = "place_your_db_host";
$db_username = "place_your_username";
$db_pass = "place_your_db_password";
$db_name = "place_your_db_name";
if (mysql_connect("$db_host","$db_username","$db_pass") == false){
return false;
}
if(mysql_select_db("$db_name") or die(mysql_error()) == false){
return false;
}
}
}
class pass_secur{
function pass($pass){
$pepper = uniqid() - 1002;
$salt = 'abcdefghijklmnopqrstuvwxzyABCDEGHIJKLMNOPQRSTUVWXYZ1234567890';
$pass = $pass = $salt.sha1($_POST['password']).$pepper;
}
}
class setmail{
function settingmail($setmail){
$to = "bob@domain_example.co.za";
$subject = "Email from website";
$message = $_REQUEST["body"];
$subject = $_REQUEST["subject"];
$email = $_REQUEST["email"];
function is_valid_email($email) {
return preg_match('#^[a-z0-9.!\#$%&\'*+-/=?^_`{|}~]+@([0-9.]+|([^\s]+\.+[a-z]{2,6}))$#si', $email);
}
if (!is_valid_email($email)) {
echo 'Sorry, invalid email';
exit;
}
$headers = "From: $email";
mail($to, $subject, $message, $headers);
echo "Thanks for submitting.";
}
}
class email_validate{
function validate_email($val_mail){
if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $str)) return false;
list($usr, $domain) = split('@', $str);
if (!@checkdnsrr($domain, 'MX')) return false;
return true;
}
}
?>
mysql_connect("$db_host","$db_username","$db_pass")
Dat moet zijn:
mysql_connect($db_host,$db_username,$db_pass)
Een die() in een class is echt not done. Je wilt nooit dat zomaar een object bepaalt dat je script stopt. Ofwel je gooit een error, ofwel je geeft een foutcode terug.
eregi (regel 54) kan je niet meer gebruiken in php, dat zal je dus moeten veranderen.
Waarom gebruik je een functie is_valid_email in de setmail class, terwijl je er een hele class vor gaat schrijven?
Toevoeging op 04/05/2012 09:25:17:
Maar misschien nog belangrijker, zoals je het nu opbouwt is het gewoon functioneel programmeren, maar dan elke functie in een class. Op deze manier OOP toepassen heeft niet zo heel veel nut, je gebruikt namelijk geen enkele meerwaarde van OOP.
Erwin H op 04/05/2012 09:23:01:
Variabelen in strings zetten heeft natuurlijk geen enkele zin:
mysql_connect("$db_host","$db_username","$db_pass")
Dat moet zijn:
mysql_connect($db_host,$db_username,$db_pass)
Een die() in een class is echt not done. Je wilt nooit dat zomaar een object bepaalt dat je script stopt. Ofwel je gooit een error, ofwel je geeft een foutcode terug.
eregi (regel 54) kan je niet meer gebruiken in php, dat zal je dus moeten veranderen.
Waarom gebruik je een functie is_valid_email in de setmail class, terwijl je er een hele class vor gaat schrijven?
Toevoeging op 04/05/2012 09:25:17:
Maar misschien nog belangrijker, zoals je het nu opbouwt is het gewoon functioneel programmeren, maar dan elke functie in een class. Op deze manier OOP toepassen heeft niet zo heel veel nut, je gebruikt namelijk geen enkele meerwaarde van OOP.
mysql_connect("$db_host","$db_username","$db_pass")
Dat moet zijn:
mysql_connect($db_host,$db_username,$db_pass)
Een die() in een class is echt not done. Je wilt nooit dat zomaar een object bepaalt dat je script stopt. Ofwel je gooit een error, ofwel je geeft een foutcode terug.
eregi (regel 54) kan je niet meer gebruiken in php, dat zal je dus moeten veranderen.
Waarom gebruik je een functie is_valid_email in de setmail class, terwijl je er een hele class vor gaat schrijven?
Toevoeging op 04/05/2012 09:25:17:
Maar misschien nog belangrijker, zoals je het nu opbouwt is het gewoon functioneel programmeren, maar dan elke functie in een class. Op deze manier OOP toepassen heeft niet zo heel veel nut, je gebruikt namelijk geen enkele meerwaarde van OOP.
De variabelen was inderdaad een fout, die ik even over het hoofd gezien had, is aangepast.
Wat zou ik in de plaats van die() wel kunnen gebruiken? Wat is netjes in een class?
Eregi veranderd naar:
Code (php)
1
if (!preg_match("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $str)) return false;
Setmail is bij het verzenden van mail, bijvoorbeeld op de contact pagina. Email_validate is bijvoorbeeld voor het checken van de mail tijdens het registreren.
Je laatste alinea begrijp ik niet, zou je daar wat meer uitleg over kunnen geven?
M grootveld op 04/05/2012 09:35:35:
Wat zou ik in de plaats van die() wel kunnen gebruiken? Wat is netjes in een class?
Dat heb ik al gezegd, een error gooien of een foutcode teruggeven (kan ook gewoon false zijn).
M grootveld op 04/05/2012 09:35:35:
Je laatste alinea begrijp ik niet, zou je daar wat meer uitleg over kunnen geven?
Dan is het misschien beter om nog niet met OOP te gaan beginnen. Sorry dat ik het zeg, maar dit kan ik niet zo simpel uitleggen. Het gebruik van OOP is niet gewoon een class om een functie zetten zoals jij nu aan het doen bent. Classes hebben ieder hun eigen verantwoordelijkheid en functionaliteit. Dat gaat een stuk verder dan gewone functies. Ik vind het moeilijk om het precies uit te leggen (misschien dat iemand anders daar beter in is), maar als dit helemaal nieuw voor je is dan raad ik je aan om eerst eens wat boeken en tutorials door te gaan nemen.