In Perl, mijn dagelijkse brood, heb je Moose en verschillende parameter check modules, Params::Check, Params::Validate en Data::FormValidator. Bij Moose kan je gewoon zeggen:quote:Op vrijdag 21 februari 2014 15:06 schreef Light het volgende:
[..]
Ik heb ook code gezien die gebruikt werd om te bepalen of iets wel of niet geldig is en die een exceptie gooide in het geval de input niet geldig was. Als de input wel geldig was, werd gewoon netjes true teruggegeven.
Afhankelijk van de situatie kan het valide zijn om inputcontrole bij een setter te plaatsen, en dan een exceptie te gooien als de input niet geldig is. Je kunt er ook voor kiezen dat niet te doen en in de class een method validate() oid te implementeren die dan gewoon true of false teruggeeft afhankelijk van de waardes van de verschillende velden. En daar zijn ook combinaties van mogelijk.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | package My::Fok; use Moose; has 'fok' => ( is => 'rw', isa => 'Int', # Str, ArrayRef, etc etc 'Class::Name' required => 0, default => sub { return 1}, ); 1; ## Elders in je code base use My::Fok; my $fok = My::Fok->new(fok => 100); |
1 2 3 4 5 6 | sub my_func { my $args = check({foo => { required => 1, isa => "My::Fok" }}, {@_}); } my $fok = My::Fok->new(fok => 100); my_func(foo => $fok); |
Werk je toevallig bij Booking.com dat je nog in Perl werkt ?quote:Op zaterdag 22 februari 2014 17:08 schreef slacker_nl het volgende:
[..]
In Perl, mijn dagelijkse brood, heb je Moose en verschillende parameter check modules,
Nope.quote:Op maandag 24 februari 2014 15:30 schreef raptorix het volgende:
[..]
Werk je toevallig bij Booking.com dat je nog in Perl werkt ?
Nee, dat is niet hoe php werkt. Je kunt prima een functie aanroepen en daarna declareren. Je kunt ook twee functies maken die elkaar aanroepen zonder dat je daar spannende extra dingen voor hoeft te doen.quote:Op donderdag 27 februari 2014 19:34 schreef zoem het volgende:
De functies zullen eerst gedeclareerd moeten worden alvorens ze aangeroepen kunnen worden. In je voorbeeld moet de call naar test() er dus onder staan. Dat is hoe php werkt.
Dat zou gewoon moeten werken. Maar het is wat lastig om je te helpen zolang niet duidelijk is wat er gebeurt als je de code in functies hebt staan.quote:Op donderdag 27 februari 2014 19:28 schreef terdege het volgende:
Hoe werken functions in PHP? Ik gebruik een los PHP bestand om data in een database te manipuleren maar ik kan daarbij geen gebruik maken van functions. Bijvoorbeeld onderstaande code werkt niet, maar als ik dezelfde mysqli_query buiten de function zet werkt het prima. Werkt een php functie alleen als er een echo of return in zit?
test();
function test(){
mysqli_query(blalba);
}
Dat werkt alleen als het binnen hetzelfde bestand staat. Hij heeft een losse file met functies die waarschijnlijk later pas geinclude wordt. En dan gaat je verhaal niet op. Heb even m'n reactie aangepast zodat het duidelijker is.quote:Op donderdag 27 februari 2014 21:29 schreef Light het volgende:
[..]
Nee, dat is niet hoe php werkt. Je kunt prima een functie aanroepen en daarna declareren. Je kunt ook twee functies maken die elkaar aanroepen zonder dat je daar spannende extra dingen voor hoeft te doen.
Ja ok Je moet een file eerst includen voordat je de code daarin kunt aanspreken.quote:Op donderdag 27 februari 2014 21:34 schreef zoem het volgende:
[..]
Dat werkt alleen als het binnen hetzelfde bestand staat. Hij heeft een losse file met functies die waarschijnlijk later pas geinclude wordt. En dan gaat je verhaal niet op. Heb even m'n reactie aangepast zodat het duidelijker is.
Wat een stom principe zegquote:Op donderdag 27 februari 2014 21:42 schreef Light het volgende:
[..]
Ja ok Je moet een file eerst includen voordat je de code daarin kunt aanspreken.
Welke dinosaurus werkt er dan ook nog zonder classesquote:Op donderdag 27 februari 2014 22:00 schreef Light het volgende:
[..]
Die werken voor classes, niet voor bestanden met losse functies.
Terdege misschien?quote:Op donderdag 27 februari 2014 22:04 schreef CrashO het volgende:
[..]
Welke dinosaurus werkt er dan ook nog zonder classes
niet alles hoeft OO te zijn hequote:Op donderdag 27 februari 2014 22:04 schreef CrashO het volgende:
[..]
Welke dinosaurus werkt er dan ook nog zonder classes
Niet alle functies wil je in een class hebben.quote:Op donderdag 27 februari 2014 22:04 schreef CrashO het volgende:
[..]
Welke dinosaurus werkt er dan ook nog zonder classes
Behalve de autoload functie, over wat voor functies heb jij het?quote:Op vrijdag 28 februari 2014 09:15 schreef Sitethief het volgende:
[..]
Niet alle functies wil je in een class hebben.
Een bunch aan helper functies? Waarom zou je dat in een class willen frotten?quote:Op vrijdag 28 februari 2014 11:26 schreef totalvamp het volgende:
[..]
Behalve de autoload functie, over wat voor functies heb jij het?
Zodat je alle die functies op 1 centrale overzichtelijke plek hebt.quote:Op vrijdag 28 februari 2014 11:38 schreef slacker_nl het volgende:
[..]
Een bunch aan helper functies? Waarom zou je dat in een class willen frotten?
En dan moet je... wat doen precies?quote:Op vrijdag 28 februari 2014 11:54 schreef totalvamp het volgende:
[..]
Zodat je alle die functies op 1 centrale overzichtelijke plek hebt.
Daarnaast heb je verschillende soorten helpers, miss wil je het wel opdelen.
Html helpers
Url helpers
Helper helpers
Parse helpers
Met classes blijf je overzichtelijk en is het duidelijk waar een functie vandaan komt.
En je kunt functienamen normaal houden, zodat je niet met dezelfde functienamen eindigt voor verschillende dingen.
1 2 3 4 | include_once("Utils.php"); my $helper = new Helper; $helper->parse_url(); |
1 2 3 | include_once("Utils.php"); parse_url(); |
De include kan je weglaten bij de OO versie want die kan je met autoload laten afhandelen.quote:Op vrijdag 28 februari 2014 12:31 schreef slacker_nl het volgende:
Ik mis je punt. Of word alles een static functie?
1 2 | $uh = Loader::helper('url'); $uh->parse_url(); |
1 2 3 4 | <?php $url = new Url('http://www.fok.nl'); echo $url->getHost(); ?> |
quote:Op vrijdag 28 februari 2014 14:23 schreef wipes66 het volgende:
[ code verwijderd ]
+ psr-0 autoloader en de rest gaat automatisch. geen includes, geen loader class. eleganter kan niet denk ik
Zo doe ik het ook ^^quote:Op vrijdag 28 februari 2014 14:23 schreef wipes66 het volgende:
[ code verwijderd ]
+ psr-0 autoloader en de rest gaat automatisch. geen includes, geen loader class. eleganter kan niet denk ik
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |