Ik verwacht een framework waarmee ik makkelijk een omgeving op kan zetten blocks en modules die ik zelf wilquote:Op woensdag 12 december 2007 11:39 schreef SharQueDo het volgende:
[..]
Wat verwacht je van Ice7? Wat verwacht je te testen en te kunnen zien?
People Hate Perlquote:Op woensdag 12 december 2007 16:44 schreef Farenji het volgende:
Jammer dat niemand verder in perl programmeert... alleen maar dat php
Het is duidelijk dat je niet weet wat perl is anders had je het niet met zo'n mank vooroorlogs speelgoedtaaltje als QBasic vergeleken. Laat ik het je daarom maar vergeven.quote:Op woensdag 12 december 2007 16:47 schreef SharQueDo het volgende:
Perl? Wat is dat?
Ook jammer dat niemand meer in QBasic programmeert.
PHP is een samenraapseltje... alle functies in 1 namespace... inconsequente functiebenamingen, inconsequente argumenten, het is traag, moeilijk uitbreidbaar, en het nodigt uit tot lelijk programmeren.quote:Op woensdag 12 december 2007 16:59 schreef H4ze het volgende:
[..]
People Hate Perl
Kan je me misschien de voordelen van Perl tov PHP vertellen? Is Perl volwassener wat OOP betreft?
kan je eens een stukje plakken hier?quote:Op woensdag 12 december 2007 17:25 schreef Farenji het volgende:
[..]
PHP is een samenraapseltje... alle functies in 1 namespace... inconsequente functiebenamingen, inconsequente argumenten, het is traag, moeilijk uitbreidbaar, en het nodigt uit tot lelijk programmeren.
Perl is veel consistenter en consequenter, veel volwassener, en ontzettend uitbreidbaar dmv de CPAN repository waar je alles wat je wil kan vinden, en meer. Nieuwe modules installeren is supermakkelijk - vergelijkbaar met iets als apt-get van debian als je dat kent.
Het idee dat perl ouderwets en traag is klopt gewoon niet - CGI was traag maar met de komst van mod_perl voor apache is het bloedsnel geworden, want gecompileerd en stateful. Je script hoeft dus niet elke keer opnieuw gecompileerd te worden, dit hoeft alleen de eerste keer dat je het runt.
Ik zal niet zeggen dat je in perl niet lelijk kan programmeren (want oh wat kan je er een onbegrijpelijke bagger mee maken als je wil) maar je wordt wel meer gedwongen zaken meer te structureren. Bovendien kun je alles met perl, het is veel krachtiger dan php, ook omdat het niet beperkt tot webdevelopment is. Je kan er volledige GUI applicaties mee maken inclusief 3d graphics.
Wat betreft OO vind ik perl ontzettend elegant - en heel intuitief zodra je die elegantie inziet. Bij php is de OO er later een beetje bijgehacked. Dat zie je nog terug aan het schrijnende gebrek aan OO benadering in alle functies van PHP.
Oke duidelijkquote:Op woensdag 12 december 2007 17:25 schreef Farenji het volgende:
[..]
PHP is een samenraapseltje... alle functies in 1 namespace... inconsequente functiebenamingen, inconsequente argumenten, het is traag, moeilijk uitbreidbaar, en het nodigt uit tot lelijk programmeren.
Perl is veel consistenter en consequenter, veel volwassener, en ontzettend uitbreidbaar dmv de CPAN repository waar je alles wat je wil kan vinden, en meer. Nieuwe modules installeren is supermakkelijk - vergelijkbaar met iets als apt-get van debian als je dat kent.
Het idee dat perl ouderwets en traag is klopt gewoon niet - CGI was traag maar met de komst van mod_perl voor apache is het bloedsnel geworden, want gecompileerd en stateful. Je script hoeft dus niet elke keer opnieuw gecompileerd te worden, dit hoeft alleen de eerste keer dat je het runt.
Ik zal niet zeggen dat je in perl niet lelijk kan programmeren (want oh wat kan je er een onbegrijpelijke bagger mee maken als je wil) maar je wordt wel meer gedwongen zaken meer te structureren. Bovendien kun je alles met perl, het is veel krachtiger dan php, ook omdat het niet beperkt tot webdevelopment is. Je kan er volledige GUI applicaties mee maken inclusief 3d graphics.
Wat betreft OO vind ik perl ontzettend elegant - en heel intuitief zodra je die elegantie inziet. Bij php is de OO er later een beetje bijgehacked. Dat zie je nog terug aan het schrijnende gebrek aan OO benadering in alle functies van PHP.
Ik plak een paar regels uit de eerste perl file die ik zie.quote:Op woensdag 12 december 2007 17:37 schreef PiRANiA het volgende:
[..]
kan je eens een stukje plakken hier?
Zo ziet het er idd uit..quote:Op woensdag 12 december 2007 19:18 schreef soylent het volgende:
[..]
Ik plak een paar regels uit de eerste perl file die ik zie.
$VERSION =~ s/^\$.*:\W(.*)\W.+?$/$1/;
$Text =~ s/\%(s|d)/$Dyn[$_]/;
$ReturnString =~ s{(\%A)}{$Self->Get($DAYS[$wd]);}egx;
Eigenlijk kan je gewoon random met kracht op je toetsenbord rammen, het resultaat is vrijwel altijd valide perl.
Ik ben het helemaal met je eens, alleen heb ik het met Java versus PHP. In Java word je geforceerd om richting perfectionisme te programmeren, in PHP kun je doen en laten wat je wilt. Ik zie vaak mensen in PHP een class als functie-verzameling gebruiken..... dat leer je in Java wel af.quote:Op woensdag 12 december 2007 17:25 schreef Farenji het volgende:
[..]
PHP is een samenraapseltje... alle functies in 1 namespace... inconsequente functiebenamingen, inconsequente argumenten, het is traag, moeilijk uitbreidbaar, en het nodigt uit tot lelijk programmeren.
....
Wat betreft OO vind ik perl ontzettend elegant - en heel intuitief zodra je die elegantie inziet. Bij php is de OO er later een beetje bijgehacked. Dat zie je nog terug aan het schrijnende gebrek aan OO benadering in alle functies van PHP.
Exact.quote:Op woensdag 12 december 2007 19:36 schreef Geqxon het volgende:
[..]
Ik ben het helemaal met je eens, alleen heb ik het met Java versus PHP. In Java word je geforceerd om richting perfectionisme te programmeren, in PHP kun je doen en laten wat je wilt. Ik zie vaak mensen in PHP een class als functie-verzameling gebruiken..... dat leer je in Java wel af.
omdat perl een VEEELS te hoge learningcurve heeft misschien wel?quote:Op woensdag 12 december 2007 16:44 schreef Farenji het volgende:
Jammer dat niemand verder in perl programmeert... alleen maar dat php
Een stukje posten? Ik weet niet of het veel zegt als je geen perl kent, het kan misschien nogal obscuur overkomen maar als je er een beetje ervaring mee hebt is het heel helder. Hier is bijvoorbeeld de User class van een applicatie die ik onlangs heb ontwikkeld. Deze zorgt oa voor authenticatie, opslaan van user session variables en laden/opslaan van usergegevens in de database. Ik heb oa voor de database, configuratie, sessie en taalondersteuning afzonderlijke classes gemaakt. Dit zijn universeel inzetbare modules die ik in vrijwel elke applicatie kan hergebruiken. Voor het meerendeel van deze classes val ik terug op bestaande perl modules (CGI, CGI::Session, DBI) waarvan ik vaak een eigen implementatie heb gemaakt die alle properties en methods overerven dmv OO. Zoals je kan zien heeft het wel wat weg van php (of eigenlijk andersom: php heeft wel wat weg van perl). Alleen dan is perl gewoon veel mooier. ;)quote:Op woensdag 12 december 2007 17:37 schreef PiRANiA het volgende:
[..]
kan je eens een stukje plakken hier?
het klinkt wel tof...
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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 | use strict; use Session; use Language; use Database; use Configuration; use Request; use Digest::SHA1 qw(sha1_base64); use Data::Dumper; sub new { my $classname = shift; my $user = { ID => 0, username => '', password => '', name => '', email => '', request => Request->new(), @_ }; my $session = Session->new( request => $user->{request}, ); $user->{session} = $session; bless $user, $classname; return $user; } sub getByID { my $self = shift; my ($ID) = @_; my $dbh = Database->instance(); my $sth = $dbh->prepare('select ID, username, name, email, userlevel, languageID from users where ID = ?;'); $sth->execute($ID); my $user = User->new(); if (my $ref = $sth->fetchrow_hashref()) { $user->{session}->param( authenticated => 1, ID => $ref->{ID}, userlevel => $ref->{userlevel}, username => $ref->{username}, name => $ref->{name}, email => $ref->{email}, languageID => $ref->{languageID}, ); $user->fillFromHash($ref); $user->setLanguage($ref->{languageID}); return $user; } } sub reload { my $self = shift; if ($self->{ID}) { $self = $self->getByID($self->{ID}); } return $self; } sub getLanguageID { my $self = shift; my $languageID = $self->{session}->param('languageID') ? $self->{session}->param('languageID') : Language->defaultID(); return $languageID; } sub setLanguage { my $self = shift; my $config = Configuration->instance(); my ($lang) = @_; if (my $language = Language->get($lang)) { $self->{session}->param( languageID => $language->{ID}, ); } # die $self->getLanguageID(); if (my $referer = $self->{request}->referer()) { # $referer =~ s/language=[a-z0-9]*//gi; # die $referer; print $self->{request}->redirect($referer); } else { print $self->{request}->redirect("http://" . $config->{site}->{domain} . $config->{site}->{script}); } exit(); } sub authenticate { my $self = shift; my $args = { username => '', password => '', @_ }; if (!$args->{username} || !$args->{password}) { return 0; } my $passwordhash = sha1_base64($args->{password}); my $dbh = Database->instance(); my $sth = $dbh->prepare('select ID, username, name, email, userlevel, languageID from users where username = ? and passwordhash = ?;'); $sth->execute($args->{username}, $passwordhash); if (my $ref = $sth->fetchrow_hashref()) { # user is authenticated, fill session $self->{session}->param( authenticated => 1, ID => $ref->{ID}, userlevel => $ref->{userlevel}, username => $ref->{username}, name => $ref->{name}, email => $ref->{email}, languageID => $ref->{languageID}, ); $self->fillFromHash($ref); $self->setLanguage($ref->{languageID}); return 1; } else { $self->{session}->param( authenticated => 0 ); return 0; } } sub changePassword { my $self = shift; return if (!$self->{ID}); my ($password, $passwordConfirm) = @_; if ($password eq $passwordConfirm) { my $dbh = Database->instance(); my $sth = $dbh->prepare(" update users set passwordhash = ? where ID = ?; "); $sth->execute(sha1_base64($password), $self->{ID}) or die $sth->errstr; $self->logout(); return 1; } } sub isAuthenticated { my $self = shift; return $self->{session}->param('authenticated'); } sub logout { my $self = shift; # just to be sure $self->{session}->param( 'userlevel' => 0, 'authenticated' => 0, ); $self->{session}->delete(); } sub getUserlevel { my $self = shift; my $userlevel = $self->{session}->param('userlevel') ? $self->{session}->param('userlevel') : 0; return $userlevel; } sub getUsername { my $self = shift; return $self->{session}->param('username'); } sub getName { my $self = shift; return $self->{session}->param('name'); } sub getEmail { my $self = shift; return $self->{session}->param('email'); } sub fillFromHash { my $self = shift; my %userData = @_; foreach my $key (%userData) { $self->{$key} = $userData{$key}; } return $self; } sub saveSession { # save al user vars to session my $self = shift; my $session = $self->{session}; $session->param('ID', $self->{ID}); $session->param('languageID', $self->{languageID}); $session->param('username', $self->{username}); $session->param('name', $self->{name}); $session->param('email', $self->{email}); $session->param('userlevel', $self->{userlevel}); } sub getSession { # get al user vars from session my $self = shift; my $session = $self->{session}; $self->{ID} = $session->param('ID'); $self->{languageID} = $session->param('languageID'); $self->{username} = $session->param('username'); $self->{name} = $session->param('name'); $self->{email} = $session->param('email'); $self->{userlevel} = $session->param('userlevel'); return $self; } sub isUnique { # is the username unique? my $self = shift; my $dbh = Database->instance(); my $sth = $dbh->prepare(" select * from users where ID != ? and username = ?; "); $sth->execute($self->{ID}, $self->{username}) or die $sth->errstr; if ($sth->fetchrow_hashref) { return; } else { return 1; } } sub save { # save user vars to db my $self = shift; my $dbh = Database->instance(); if ($self->{ID}) { # existing user, update my $sth = $dbh->prepare(" update users set username = ?, name = ?, email = ?, userlevel = ? where ID = ?; "); $sth->execute( $self->{username}, $self->{name}, $self->{email}, $self->{userlevel}, $self->{ID} ) or die $sth->errstr; } else { # new user, insert my $sth = $dbh->prepare(" insert into users (username, passwordhash, name, email, userlevel) values (?, ?, ?, ?, ?); "); $sth->execute( $self->{username}, sha1_base64($self->{password}), $self->{name}, $self->{email}, $self->{userlevel} ) or die $sth->errstr; $self->{ID} = $sth->{mysql_insertid}; } $self->saveSession(); return $self->{ID}; } sub getSessionParam { my $self = shift; my ($param) = @_; return $self->{session}->param($param); } sub getSessionParams { my $self = shift; return $self->{session}->param_hashref(); } sub setSessionParam { my $self = shift; my %params = @_; foreach my $key (keys %params) { $self->{session}->param($key, $params{$key}); } } 1; |
Het geposte fragment is "net" in de zin dat de hele applicatie netjes het MVC model volgt - het is onderdeel van een ontzettend veel grotere applicatie die ik uiteraard niet ga posten omdat daar geen ruimte voor is op fok en ook omdat ik niet alles ga weggeven - mijn klant betaalt me goed voor het maken van deze applicatie.quote:Op donderdag 13 december 2007 00:58 schreef mschol het volgende:
dat php wat wegheeft van perl is logisch.. maar perl mooier? niet echt...
ik ken perl code die best rommelig is (maar perfect werkt, drukke webwinkel) en php scripts die echt veel netter zijn dan dat... dus het is maar net je programmeerstijl
Er zijn voor PHP hele aardige frameworks en mbv deze frameworks kun je je webapps op een vrij simpele manier het MVC model laten volgenquote:Op donderdag 13 december 2007 01:13 schreef Farenji het volgende:
[..]
Het geposte fragment is "net" in de zin dat de hele applicatie netjes het MVC model volgt
Dat dus. Dat je in PHP de vrijheid hebt om te coden "zoals je wilt", betekent niet dat je daardoor niet netjes kan programmeren in PHP.quote:Op woensdag 12 december 2007 18:13 schreef Tuvai.net het volgende:
PHP is makkelijker en trekt daardoor veel onkundige hobbyisten aan, maar is bij verre niet incapabel te noemen. 'Lelijk programmeren' kun je net zo goed in Java, ASP, Perl of welke andere taal dan ook. Net zo goed als dat je wel netjes en object georiënteerd kunt programmeren in PHP.
1 2 3 4 5 6 7 | if ((string)"false" == (int)0) { echo "true"; } else { echo "false"; } ?> |
lol dat is wel erg door geschoten jaquote:Op donderdag 13 december 2007 09:54 schreef Farenji het volgende:
En FOR CRYING OUT LOUD. Neem dit stukje code nou:
[ code verwijderd ]
Volgens php is de STRING "false" gelijk aan de INTEGER 0.![]()
![]()
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |