PHP Library
P.S. Dit zal waarschijnlijk een hele domme vraag zijn ! Excuus...
Gewijzigd op 10/06/2015 11:19:26 door Paco de Wulp
Je kan natuurlijk functies gebruiken, of eventueel zelfs overkoepelende classes.
@Aar: Functies gebruik ik al veelvuldig. Die moeten toch ook weer allemaal over het internetlijntje naar de server worden verzonden. Iedere keer weer.
Ik moet bekennen dat ik totaal geen kaas heb gegeten van OOP-programmering. Dit is een ander puntje op mijn ToDo-List. Misschien even de prioriteiten bijstellen ?
Paco de Wulp op 10/06/2015 14:20:35:
@Aar: Functies gebruik ik al veelvuldig. Die moeten toch ook weer allemaal over het internetlijntje naar de server worden verzonden. Iedere keer weer.
Wut? Dat moet toch met al je code?
Je kunt best routines die je vaak uitvoert in functies vangen en deze in een include zetten. Of je zet deze in een of meer klasses.
Voel je vrij om je eigen functies te rollen (en daarmee mogelijk het wiel meerdere keren uit te vinden).
Gewijzigd op 10/06/2015 14:59:00 door Thomas van den Heuvel
Quote:
<-- en dat was het dus ook !P.S. Dit zal waarschijnlijk een hele domme vraag zijn ! Excuus...
Met PHP Library bedoelde ik dat er een soort binary-library op de server staat, waardoor ik dan alleen maar functie aanroepen hoefte te doen.
Maar ik geloof dat ik het helemaal verkeerd zit, want alle PHP-codes staan natuurlijk al op de server. Denkfoutje dus... En PHP is en script-taal die eerst geïnterpreteerd dient te worden. Ik dacht mijn functies in een soort binary-library konden worden gezet, zodat het eventueel sneller zou gaan.
lalalalala !
Toevoeging op 10/06/2015 15:59:34:
Maar nu we het er toch over hebben wat is handig.
1) Alle functies in één include stoppen en dan alle programma's die include laten gebruiken
PROGRAMMA.php --> include ALLFUNCTIONS.php
2) Alle functies apart includen in een in apart include php-bestandje dat per programma geldt
PROGRAMMA1.php --> include FUNCTIONSPROGRAMMA1.php --> include CheckEmail.php, include CheckIban.php, include CheckProgramma_id.php
PROGRAMMA2.php --> include FUNCTIONSPROGRAMMA2.php --> include CheckNaam.php, include CheckKvk_nummer.php, include CheckBtw_nummer.php
Gewijzigd op 10/06/2015 16:07:10 door Paco de Wulp
Je zou naar mijn mening toch moeten proberen eens met classes te starten als je serieus je eigen libs wilt gaan maken. Ik zeg bewust classes en geen OOP omdat daar nog wel een wezenlijk verschil tussen zit.
Mocht je dat gaan doen dan zou ik zeggen:
- 1 class per bestand
- classnaam en bestandsnaam worden gelijk
- classnamen begin je met een hoofdletter. class Router staat in Router.php
Mocht je het toch liever bij functies houden dan zou ik ze toch enigszins groeperen. Dat doe je met classes ook namelijk. Bijvoorbeeld de functies die je gebruikt voor authenticatie (login en checklogin etc) zou je dan gezamelijk in Authenticate.php kunnen stoppen.
Toevoeging op 10/06/2015 16:16:04:
Includen doe je in je landingspagina's. (index.php, about.php, contact.php etc).
Als je met classes gaat werken kun je met een autoloader (psr-0 of psr-4) werken.
@Frank Welbelangrijk: Momenteel include ik functies afhankelijk van het soort programma. Sommige functies zijn ook weer in andere programma's nodig, dus doe ik copy-paste. De kans dat functie CheckOmschrijving in het ene programma wel slashes toestaat, maar in een ander programma CheckOmschrijving géén slashes toestaat is aanwezig. Omdat ik copy-paste toe pas, kan ik een keertje in het ene programma toch nog hebben aangepast. Dit wil ik voorkomen.
Om dit te voorkomen, zou ik de functies allemaal apart moeten hebben staan (bv. mapje: Functions)en vandaar uit de verschillende functies moeten includen in mijn programma, zodat er geen verschillende versies ontstaan van bepaalde validatiefuncties. Mij lijkt het wel dat zo'n include best wel tijdrovend is (bestandje openen, inlezen, sluiten). Wanneer ik 10 functies nodig heb zal ik 10x een include moeten doen.
Is dit wel verstandig ???
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
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
Quote:
Mij lijkt het wel dat zo'n include best wel tijdrovend is (bestandje openen, inlezen, sluiten). Wanneer ik 10 functies nodig heb zal ik 10x een include moeten doen.
Quote:
Klopt mijn veronderstelling dat dit relatief veel laadtijd gaat kosten ?
Gewijzigd op 10/06/2015 18:48:35 door Paco de Wulp
Als er samenhang tussen is, kan je het uitbreiden tot een class.
Als mogelijke oplossing voor copy-paste problematiek. Ik zou graag alle functies op één plaats willen hebben en niet verspreid in meerdere PHP-scripts.
Daarin staan al je functies.
Als dat een groot (lang) bestand wordt, zodat jij niet meer makkelijk een bepaalde functie kan terugvinden (denk aan: 30 functies onder elkaar), dan wil je wel scheiden.
Wat veel systemen doen is een soort bootstrap.php includen.
Dat is dan 1 regel in je home.php die je moet includen.
En in bootstrap.php staan dan de 20 includes naar je 20 functions/welke_functie_dan_ook.php ;)
http://stackoverflow.com/questions/17732731/does-php-include-decrease-page-loading
I have my answer. I doesn't make any noticeable difference.
Toevoeging op 10/06/2015 19:20:09:
@Eddy E: En die bootstrap.php laad je dus altijd bij elk nieuw programma ?
I have my answer. I doesn't make any noticeable difference.
Toevoeging op 10/06/2015 19:20:09:
@Eddy E: En die bootstrap.php laad je dus altijd bij elk nieuw programma ?
Gewijzigd op 10/06/2015 19:22:25 door Paco de Wulp
- Abraham Lincoln
Overigens, het idee van een autoloader is dus dat je niet alles hoeft te includen. De bestanden waarin de benodigde classes staan worden automatisch geinclude op het moment dat objecten van die classes gebruikt worden. Op die manier include je dus nooit "teveel", maar precies datgene wat je gebruikt.
Dat klinkt interessant autoloader. @Frank noemde het al eerder, maar ik wist niet wat dat dan inhield. Thx.
Code (php)
Zo zou je meer dingen kunnen toevoegen tot 1 classe die onder 1 namespace vallen (Validate::).
Je kan ook functies gebruiken, maar die moeten apart aangeroepen worden en hoe meer functies je hebt hoe ingewikkelder het gaat worden.
Persoonlijk zal ik een classe zal maken die dit soort dingen bekijkt zal ik dus een input validator schrijven. POST, GET zijn PHP invoer variabelen en zal dus automatisch een classe dit laten verwerken.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
class input{
function __construct($a){
// deze functie word aangeroepen als deze classe aangemaakt word.
// $a = 'a'
}
}
$a = new input('a');
?>
class input{
function __construct($a){
// deze functie word aangeroepen als deze classe aangemaakt word.
// $a = 'a'
}
}
$a = new input('a');
?>
Gewijzigd op 10/06/2015 23:55:41 door Johan K
@Johan K: Thx, ik ga ermee aan de slag.
Die laatste is logisch omdat (merk ik nu zelf) PHP best wel enorm traag is voor OOP-achtige dingen. Niet dat je dat nu direct op een i7 merkt thuis, maar op een server maakt het aantal pagina's per seconde wel uit. IJzer is duur, zeker als je het huurt. Of als je zoals ik noodgedwongen een intrantet-applicatie voor een NAS maakt, dan werkt die gestripte 1.5 GHz non-intel chip ook bepaald niet mee. We doen allemaal moeite voor performance, dat is niet voor niets. Sommigen gaan erg ver (vb. Phalcon, zie https://phalconphp.com ) maar je kunt ook je eigen C of C++ extenties bakken: http://www.hackingwithphp.com/20/0/0/writing-extensions
Even los van dat ik het niet direct nodig heb en dat Synology het niet out-of-the-box toelaat, ben ik wel nieuwsgierig of er hier ook mensen zijn die daar enige ervaring mee hebben, of die weer mensen kennen die er ervaring mee hebben. Waar kun je het beste beginnen als je je eigen C(++)-extensie wilt maken?