abonnement Unibet Coolblue Bitvavo
  Moderator / Redactie Sport / Devops donderdag 27 februari 2014 @ 19:34:57 #105
176766 zoem
zoemt
pi_137210501
De functies zullen eerst gedeclareerd moeten worden alvorens ze aangeroepen kunnen worden. In je voorbeeld moet de call naar test() dus onder de include staan. Dat is hoe php werkt.

[ Bericht 3% gewijzigd door zoem op 27-02-2014 21:33:12 ]
pi_137217114
quote:
0s.gif 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.
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.
pi_137217353
quote:
0s.gif 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 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.

Tip: plaats php code tussen [php] en [/php] voor leuke kleurtjes en regelnummers enzo.
  Moderator / Redactie Sport / Devops donderdag 27 februari 2014 @ 21:34:42 #108
176766 zoem
zoemt
pi_137217441
quote:
0s.gif 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.
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.
pi_137217888
quote:
0s.gif 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.
Ja ok :) Je moet een file eerst includen voordat je de code daarin kunt aanspreken.
pi_137218347
quote:
0s.gif 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.
Wat een stom principe zeg
In theory there is no difference between theory and practice. In practice there is.
pi_137218689
quote:
10s.gif Op donderdag 27 februari 2014 21:50 schreef slacker_nl het volgende:
Wat een stom principe zeg
Autoloaders _O_

[ Bericht 7% gewijzigd door #ANONIEM op 27-02-2014 21:57:47 ]
pi_137218961
quote:
Die werken voor classes, niet voor bestanden met losse functies.
pi_137219162
quote:
0s.gif Op donderdag 27 februari 2014 22:00 schreef Light het volgende:

[..]

Die werken voor classes, niet voor bestanden met losse functies.
Welke dinosaurus werkt er dan ook nog zonder classes :')

[ Bericht 7% gewijzigd door #ANONIEM op 27-02-2014 22:05:12 ]
pi_137220197
quote:
1s.gif Op donderdag 27 februari 2014 22:04 schreef CrashO het volgende:

[..]

Welke dinosaurus werkt er dan ook nog zonder classes :')
Terdege misschien?
pi_137220426
Dan zijn wij hier om hem te vertellen. Get to class(es) :+

[ Bericht 0% gewijzigd door #ANONIEM op 27-02-2014 22:26:11 ]
pi_137221390
quote:
1s.gif 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 he
In theory there is no difference between theory and practice. In practice there is.
  vrijdag 28 februari 2014 @ 09:15:38 #117
25889 Sitethief
Fulltime Flapdrol
pi_137229471
quote:
1s.gif 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.
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht >:)
pi_137232663
quote:
0s.gif Op vrijdag 28 februari 2014 09:15 schreef Sitethief het volgende:

[..]

Niet alle functies wil je in een class hebben.
Behalve de autoload functie, over wat voor functies heb jij het?
  vrijdag 28 februari 2014 @ 11:38:17 #119
187069 slacker_nl
Sicko pur sang
pi_137233006
quote:
1s.gif Op vrijdag 28 februari 2014 11:26 schreef totalvamp het volgende:

[..]

Behalve de autoload functie, over wat voor functies heb jij het?
Een bunch aan helper functies? Waarom zou je dat in een class willen frotten?
In theory there is no difference between theory and practice. In practice there is.
pi_137233499
quote:
0s.gif 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?
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.
  vrijdag 28 februari 2014 @ 12:31:50 #121
187069 slacker_nl
Sicko pur sang
pi_137234346
quote:
1s.gif 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.
En dan moet je... wat doen precies?

1
2
3
4
include_once("Utils.php");

my $helper = new Helper;
$helper->parse_url();

of..

1
2
3
include_once("Utils.php");

parse_url();

Ik mis je punt. Of word alles een static functie?

Er is een plek voor OO en er is een plek voor non-OO en die werelden kun je best mixen. Wij doen redelijk aan OO, maar we hebben ook zeker non-OO componenten, dat zijn Util functies, het fijne is wel dat we precies kunnen zeggen wat we willen gebruiken uit een module.

[ Bericht 8% gewijzigd door slacker_nl op 28-02-2014 12:37:28 ]
In theory there is no difference between theory and practice. In practice there is.
pi_137236071
quote:
0s.gif Op vrijdag 28 februari 2014 12:31 schreef slacker_nl het volgende:
Ik mis je punt. Of word alles een static functie?
De include kan je weglaten bij de OO versie want die kan je met autoload laten afhandelen.
Dan is het dus precies evenlang als de niet OO versie. En imo een stuk onderhoudbaarder want je kunt helpers specifiek inrichten op een taak en alles netjes bij elkaar gouden, in dit geval een url helper.

En die dan niet static maken, maar wel inladen via bijv een (static) loader. Waarbij Loader bijhoudt of er al een instantie draait en die dan teruggeven, of een nieuwe aanmaken.

Dan krijg je iets als:
1
2
$uh = Loader::helper('url');
$uh->parse_url();


[ Bericht 14% gewijzigd door #ANONIEM op 28-02-2014 13:27:47 ]
pi_137238039
1
2
3
4
<?php
$url 
= new Url('http://www.fok.nl');
echo 
$url->getHost();
?>

+ psr-0 autoloader en de rest gaat automatisch. geen includes, geen loader class. eleganter kan niet denk ik :P
..///
pi_137239794
quote:
0s.gif 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 :P
_O_
pi_137239964
quote:
0s.gif 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 :P
Zo doe ik het ook ^^
  vrijdag 28 februari 2014 @ 18:22:19 #126
187069 slacker_nl
Sicko pur sang
pi_137245644
quote:
0s.gif 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 :P
Huiverig wordt ik ervan, automatisch files laden, expliciet aangeven welke klasse je wilt gebruiken in je module.

Hoe werkt autoloader eigenlijk, als ik t/inc/Net/LDAP.php heb en een lib/Net/LDAP.php, kan ik dan zeggen dat t/inc gebruikt moet worden of dat lib gebruikt moet worden?
In theory there is no difference between theory and practice. In practice there is.
  Moderator / Redactie Sport / Devops vrijdag 28 februari 2014 @ 18:36:00 #127
176766 zoem
zoemt
pi_137245943
quote:
0s.gif Op vrijdag 28 februari 2014 18:22 schreef slacker_nl het volgende:

[..]

Huiverig wordt ik ervan, automatisch files laden, expliciet aangeven welke klasse je wilt gebruiken in je module.

Hoe werkt autoloader eigenlijk, als ik t/inc/Net/LDAP.php heb en een lib/Net/LDAP.php, kan ik dan zeggen dat t/inc gebruikt moet worden of dat lib gebruikt moet worden?
Ja, want de classloaders kunnen het pad achterhalen dmv de classname of namespace. Vroeger zag je vaak de "Vendor_My_Awesome_Class" constructie, waarbij underscores door slashes werden vervangen in de autoloader. Moderne frameworks gebruiken nu namespaces, waarbij de namespace separator wordt gebruikt voor het resolven van het pad. Een vereiste is dus dat er een toplevel namespace moet zijn.

Zie verder https://github.com/php-fi(...)er/accepted/PSR-0.md
pi_137246605
@ OO discussie. Ik weet hoe ik OO moet programmeren maar ik heb geen ervaring met PHP. Ik heb vervolgens geleerd om aparte PHP bestanden te maken voor verschillende taken die dan aan te roepen met behulp van JSON. Bijvoorbeeld: als iemand op een rode knop drukt wordt rodeknop.php uitgevoerd. Dit is dus geen goede manier om PHP te gebruiken?

quote:
0s.gif Op donderdag 27 februari 2014 21:33 schreef Light het volgende:

[..]

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.

Tip: plaats php code tussen
[ code verwijderd ]

voor leuke kleurtjes en regelnummers enzo.
Vanuit HTML wordt een PHP bestand met deze code aangeroepen als iemand ergens op klikt. Het is vrij simpel. Alles werkt gewoon zoals het hoort, alleen de functies worden niet uitgevoerd.

1
2
3
4
5
6
7
8
9
<?php
    
include 'dbconnect.php';
    
test();

    function 
test(){
        
mysqli_query($link'UPDATE tablename SET Rowname=5');
    }
    
mysqli_close($link);
?>
pi_137246907
quote:
0s.gif Op vrijdag 28 februari 2014 18:59 schreef terdege het volgende:
Alles werkt gewoon zoals het hoort, alleen de functies worden niet uitgevoerd.
$link binnen je functie `test` gaat niet werken. Die zit in een andere scope. Als je hem daar wilt gebruiken zal je hem moeten meegeven. (of OO gaan en een property binnen je class aanspreken O-) )
SPOILER
Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.


[ Bericht 16% gewijzigd door #ANONIEM op 28-02-2014 19:09:51 ]
pi_137246962
quote:
0s.gif Op vrijdag 28 februari 2014 18:59 schreef terdege het volgende:
@ OO discussie. Ik weet hoe ik OO moet programmeren maar ik heb geen ervaring met PHP. Ik heb vervolgens geleerd om aparte PHP bestanden te maken voor verschillende taken die dan aan te roepen met behulp van JSON. Bijvoorbeeld: als iemand op een rode knop drukt wordt rodeknop.php uitgevoerd. Dit is dus geen goede manier om PHP te gebruiken?

[..]

Vanuit HTML wordt een PHP bestand met deze code aangeroepen als iemand ergens op klikt. Het is vrij simpel. Alles werkt gewoon zoals het hoort, alleen de functies worden niet uitgevoerd.
[ code verwijderd ]

Wat je doet heeft niets met OO te maken, maar dat wil niet zeggen dat het 'geen goede manier'is. Als je OO wilt programmeren zul je toch echt classes, namespaces, methods enz. moeten gaan gebruiken.

Je functie in dat voorbeeld zal waarschijnlijk een foutmelding geven dat $link niet gedefinieerd is maar ik zie niet waarom hij niet uitgevoerd zou worden.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')