"professioneel scripting"
Ik doe zo nu en dan een sollicitatie voor een php funtie in een bedrijf maar mijn skills zijn daar niet goed genoeg voor dus ik wil me wat gaan verdiepen.
over het volgende script kreeg ik het volgende feed-back:
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
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
<?php
//include('config.php);
$db_user = "user";
$db_pass = "password";
$db_host = "localhost";
$db_db = "database";
mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_db);
//include('funties.php');
function Naam($userid)
{
$sql = "SELECT id,voornaam,tussenvoegsels,achternaam FROM gebruikers WHERE id='".mysql_real_escape_string($userid)."'";
$query = mysql_query($sql) or die (mysql_error ());
$row = mysql_fetch_assoc($query);
if(mysql_num_rows($query) == 0){
$naam = '<font color="#FF0000">Naam niet gevonden.</font>';
}else{
$naam = ucfirst($row['voornaam']);
if(!$row['tussenvoegsels'] == ""){
$naam .= ' '.$row['tussenvoegsels'];
}
$naam .= ' '.ucfirst($row['achternaam']);
}
return $naam;
}
// Gebruikers uitlezen.
echo '<table width="50%">
<tr><td><b>Naam</b></td><td><b>E-mail</b></td></tr>';
$sql = "SELECT id,email FROM gebruikers";
$query = mysql_query($sql) or die (mysql_error ());
if(mysql_num_rows($query) == 0){
echo '<tr><td colspan="2">Er zijn geen gebruikers.</td></tr>';
}else{
while($row = mysql_fetch_assoc($query)){
echo '<tr><td>'.Naam($row['id']).'</td><td>'.$row['email'].'</td></tr>';
}
}
echo '</table>';
?>
//include('config.php);
$db_user = "user";
$db_pass = "password";
$db_host = "localhost";
$db_db = "database";
mysql_connect($db_host,$db_user,$db_pass);
mysql_select_db($db_db);
//include('funties.php');
function Naam($userid)
{
$sql = "SELECT id,voornaam,tussenvoegsels,achternaam FROM gebruikers WHERE id='".mysql_real_escape_string($userid)."'";
$query = mysql_query($sql) or die (mysql_error ());
$row = mysql_fetch_assoc($query);
if(mysql_num_rows($query) == 0){
$naam = '<font color="#FF0000">Naam niet gevonden.</font>';
}else{
$naam = ucfirst($row['voornaam']);
if(!$row['tussenvoegsels'] == ""){
$naam .= ' '.$row['tussenvoegsels'];
}
$naam .= ' '.ucfirst($row['achternaam']);
}
return $naam;
}
// Gebruikers uitlezen.
echo '<table width="50%">
<tr><td><b>Naam</b></td><td><b>E-mail</b></td></tr>';
$sql = "SELECT id,email FROM gebruikers";
$query = mysql_query($sql) or die (mysql_error ());
if(mysql_num_rows($query) == 0){
echo '<tr><td colspan="2">Er zijn geen gebruikers.</td></tr>';
}else{
while($row = mysql_fetch_assoc($query)){
echo '<tr><td>'.Naam($row['id']).'</td><td>'.$row['email'].'</td></tr>';
}
}
echo '</table>';
?>
- Code is niet OO
- Code en uitvoer door elkaar
- Code is niet gedocumenteerd
- Gebruik van een object (DAO) voor de afhandeling van de database acties.
- Gebruik van een templating systeem.
- het liefst gebruik van MVC
dus ik neem aan dat OO = OOP?
en ben dus was OOP tuts gaan volgen maar ik snap het nut niet echt en ik hoop dat jullie mij kunnen helpen met dit script opbouwen naar een professioneel scrpt.
Wat ik zelf al niet goed vindt is de fout afhandeling van de SQL.
Want ik moet natuurlijk geen DIE gebruiken.
Ik hoop dat ik wat peer persoonlijk uitleg kan krijgen inplaats van allemaal linkjes.
Maar een paar goeie links naar OOP tuts kan ik wel gebruiken!
Bedankt!
Gewijzigd op 23/12/2010 13:25:10 door Mitchel V
OOP beginnershandleiding.
Wat wil je verder nu precies van ons? Je verwacht toch niet dat we je helpen een script te ontwikkelen waarmee je wel kans maakt bij een sollicitatie? Je moet zelf de achterliggende kennis opdoen en dat kan alleen door veel zelf te lezen en te programmeren.
OO staat inderdaad voor Object Oriented. Het object georienteerd programmeren begint bij de denkwijze: je moet in objecten gaan denken. Lees bijvoorbeeld deze Wat wil je verder nu precies van ons? Je verwacht toch niet dat we je helpen een script te ontwikkelen waarmee je wel kans maakt bij een sollicitatie? Je moet zelf de achterliggende kennis opdoen en dat kan alleen door veel zelf te lezen en te programmeren.
Gewijzigd op 23/12/2010 13:44:50 door John D
Wees consistent wat betreft
- de namen van variabelen en functies
gebruik niet voor de ene variabele camelCaps en voor de andere underscore_stijl
- indentering
Soms zet je een openings-accolade op de volgende lijn, soms op de zelfde lijn.
- ' versus "
...
Lees anders dit eens:
http://drupal.org/coding-standards
Dit is een systeem; niet het enige systeem; maar het is wel eenduidig.
Het is niet de bedoeling dat ik het script ga gebruiken voor een volgende sollicitatie!
Het gaat mij er meer om dat ik mij zelf kan ontwikkelen en aantrekkelijker wordt voor een bedrijf.
Ik ga de tut doornmen.
Maar ik heb al een paar andere tuts gelezen maar ik vind daar niet de logica..
want ik zie ze soms classes gebruiken waarvan ik denk, dat kan toch makkelijk in een functie xD
En als we dit script samen kunnen ombouwen naar een professioneel script kan ik kijken hoe het wel moet, en naar mijn script hoe het niet moet.
@John
Ik ben al lang opzoek naar een bedrijf waar ik kan werken als phper.
dus zodra ik een kans krijg grijp ik die :P
Want ik zou graag in teamverband willen werken zodat ik veel van andere mensen kan leren.
Dus ook het stukje logica in het scripten.
@kris
in jou linkje zie ik dit:
}
elseif (condition3 && condition4) {
Zelf vindt ik dat niet mooi en overzichtelijk omdat je nu onnodige etenters krijgt.
}elseif (condition3 && condition4) {
zo vindt ik het beter:P
Ik blijf bij het Drupal systeem, maar dat is dus persoonlijk.
John D op 23/12/2010 13:41:13:
Een beetje off-topic maar: Op zich is het belachelijk dat een bedrijf je beoordeelt op een stuk script. Dit zegt iets over het bedrijf, het bedrijf heeft geen skills om een sollicitant te beoordelen. Bij zo'n bedrijf(je) wil je niet eens werken toch? Wij doen bedrijfsmatig niets met php maar ik hanteer toch wel andere criteria om programmeurs aan te nemen. Die hoeven bij mij echt geen stukje code te overleggen, belachelijk. Wanneer ik iemand aanneem als junior-developer dan verwacht ik nog helemaal niet dat meteen conceptueel goeie code kan schrijven maar ik onderzoek of je bereid en in staat bent om het te leren. Volg het advies van Blanche en ga maar eens lezen.
John, als je kijkt naar de reactie van het bedrijf kan ik je vertellen dat het bedrijf wel degelijk wat kennis in huis heeft. Het script is gewoon erg amateuristisch opgezet en dat merken zij ook.
Van een junior PHP-er mag je toch wel verwachten dat hij (of zij..) de basis kent van alles wat ze daar zeggen. Tuurlijk, de wil om verder te leren is natuurlijk ook erg belangrijk, maar het moet niet zo zijn dat het bedrijf hem/haar alles moet leren lijkt me?
@Chris: Waarom niet? Ik verwacht van een schoolverlater dat we hem alles moeten leren. Op school heeft hij er slechts aan geproefd en affiniteit mee gekregen. Zowel MBO als HBO docenten zijn naar mijn ervaring onvoldoende in staat om developers a) gestructureerde en b) eenduidige en c) gestandaardiseerde technieken/programmeertalen aan te leren. Gestructureerd programmeren alleen al, komt onvoldoende aan bod. Je herkent het hier op phphulp meteen: een student begint te krassen met de programmeertaal zonder dat hij structuur geleerd heeft. Wij hanteren een cursusbudget van 5k op jaarbasis en een inwerktijd van drie maanden. In die periode kan je beoordelen of de junior het waard is om mee door te gaan. Belangrijkste eisen zijn dus affiniteit met de materie, communicatieve vaardigheden en de wil en inzet om erin te duiken. enne Dit is overigens geen vacature, ik werk bedrijfsmatig niet met php. php is meer voor mijn prive toepassingen.
Dat weet ik dat het geen vacature is haha.
zou anders wel slordig zijn op een forum he ;)
ondertussen ben ik nog de tut aan het doornemen van
OOP Beginnershandleiding (PHP5)
Ik denk dat je zoiets bedoelt. Dit is het uitgangspunt, en wat kun je zoal al lerende verbeteren?
Als je, zoals je zelf zegt, al lang bezig bent met het zoeken naar een baan als PHP-er, heb je toch geruime tijd gehad om je eens (buiten school of werk) in PHP te verdiepen en kennis te maken met de door jou genoemde concepten/praktijken/methoden die je script missen?
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
/* De User class */
class User {
public $username;
public function setUsername($name) {
$this->username = $name;
}
public function getUsername() {
return $this->username;
}
}
/* Reguliere procedurele code */
$user = new User();
$user->setUsername('jan');
echo $user->getUsername();
?>
De output van dit scriptje ziet er als volgt uit:
output:
jan
/* De User class */
class User {
public $username;
public function setUsername($name) {
$this->username = $name;
}
public function getUsername() {
return $this->username;
}
}
/* Reguliere procedurele code */
$user = new User();
$user->setUsername('jan');
echo $user->getUsername();
?>
De output van dit scriptje ziet er als volgt uit:
output:
jan
Waarom zou ik dit zo doen :S
Waarom niet echo 'jan';
want er gebeurt toch niets mee?
Voor alleen het echo'en van 'jan' snap ik jouw redenatie wel. Je moet denken in grote applicaties zoals, cms, fora, gastenboek, blogs, etc.
Mitchel V op 23/12/2010 21:44:19:
Waarom zou ik dit zo doen :S
Waarom niet echo 'jan';
want er gebeurt toch niets mee?
Waarom zou ik dit zo doen :S
Waarom niet echo 'jan';
want er gebeurt toch niets mee?
Mitchel dat komt van de tut van blanche ja.
gezien wat er boven staat?
OOP Beginnershandleiding (PHP5)
Oftewel dat is een voorbeeld. Met OOP is meer mogelijk
wat jij zegt is hetzelfde als een PHP Beginners handleiding "echoen"
oftewel:
waarom zou ik echo 'jan'; doen als ik gewoon in html jan kan neerzetten?
Quote:
}elseif (condition3 && condition4) {
zo vindt ik het beter:P
zo vindt ik het beter:P
ik doe het over het almeen zelfs zo :
Op die manier is het namelijk het makkelijkste om te zien welke { bij welke } hoort en welke je eventueel bent vergeten af te sluiten.
Gewijzigd op 23/12/2010 23:21:47 door Jacco Engel
Jacco Engel op 23/12/2010 23:20:03:
Op die manier is het namelijk het makkelijkste om te zien welke { bij welke } hoort en welke je eventueel bent vergeten af te sluiten.
Ook dat is een mening. Dat jij dat het makkelijkste vindt, wil nog niet zeggen dat een ander dat ook vindt. Het belangrijkste, en dat is al vaker genoemd, is dat je consistent bent en altijd dezelfde methode gebruikt...
Gewoon even wennen.
Daar is het zo dat de sluitende accolade op de zelfde plaats komt (maar dan lager) dan het begin van het statement waar het bij hoort.
bv.
Voordeel is wel dat je lijnen spaart, waardoor je meer code op je scherm kan zien en dus minder moet scrollen.
Met goede software (notepad2.exe, notepad++, ...) wordt dat perfect gevisualiseerd met hulplijntjes, bijbehorende haakjes/accolades die oplichten als je over de andere hovert. ...
Gewijzigd op 24/12/2010 10:43:46 door Kris Peeters
dus ik denk dat ik maar gewoon een andere oefening moet doen waarbij het OOP veel nuttiger is.
Heeft iemand misschien een oefening voor mij?