PHP Library

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Paco de Wulp

Paco de Wulp

10/06/2015 11:17:43
Quote Anchor link
Kan ik in PHP geen library maken ? Ik heb nu een aantal validaties voor velden die ik keer op keer weer nodig heb.

P.S. Dit zal waarschijnlijk een hele domme vraag zijn ! Excuus...
Gewijzigd op 10/06/2015 11:19:26 door Paco de Wulp
 
PHP hulp

PHP hulp

23/04/2024 08:11:08
 
Jacco Engel

Jacco Engel

10/06/2015 11:25:59
Quote Anchor link
Heb je een validation class overwogen :)?

http://php.net/manual/en/language.oop5.php
 
- Ariën  -
Beheerder

- Ariën -

10/06/2015 11:58:50
Quote Anchor link
Je kan natuurlijk functies gebruiken, of eventueel zelfs overkoepelende classes.
 
Paco de Wulp

Paco de Wulp

10/06/2015 14:20:35
Quote Anchor link
@Jacco Engel: Is er buiten die OOP-oplossing nog een andere oplossing ?
@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 ?
 
Thomas van den Heuvel

Thomas van den Heuvel

10/06/2015 14:58:34
Quote Anchor link
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
 
Paco de Wulp

Paco de Wulp

10/06/2015 15:46:36
Quote Anchor link
Quote:
P.S. Dit zal waarschijnlijk een hele domme vraag zijn ! Excuus...
<-- en dat was het dus ook !
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
 
Frank Nietbelangrijk

Frank Nietbelangrijk

10/06/2015 16:12:33
Quote Anchor link
Je kunt prima PHP libraries aanmaken. Ze zijn alleen niet gecompileerd. Maar dat is geen probleem want PHP is echt snel genoeg hierin.

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.
 
Paco de Wulp

Paco de Wulp

10/06/2015 16:48:07
Quote Anchor link
Ja, ik weet het. Ik moet aan de Classes....en aan de OOP......uiteindelijk :-) Ik kan me er nog weinig bij voorstellen.

@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 ???
 
Frank Nietbelangrijk

Frank Nietbelangrijk

10/06/2015 17:24:50
Quote Anchor link
Je zou je functies zo moeten schrijven dat je ze kunt hergebruiken. In jouw voorbeeld zou je functie dan misschien een nieuwe parameter moeten krijgen met een naam als $acceptSlashes die je vervolgens TRUE of FALSE kunt geven. Bovendien wil je nu iets dat met classes wel kan: een functie overschrijven!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?php

class BaseTest
{
    public function test()
    {

        return 'groen';
    }


    public function test2()
    {

        return 'geel';
    }


    // nog veel meer functies
}

class ExtendedTest extends BaseTest
{
    public function test()
    {

        return 'rood';
    }
}


$test = new ExtendedTest();
echo $test->test();
echo $test->test2();

?>
 
Paco de Wulp

Paco de Wulp

10/06/2015 18:48:06
Quote Anchor link
Je maakt het wel verleidelijk om over te stappen naar Classes @Frank.
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
 
- Ariën  -
Beheerder

- Ariën -

10/06/2015 19:03:45
Quote Anchor link
Waarom 10 includes, volgens jouw? Je kan meerdere functies in een bestand zetten.

Als er samenhang tussen is, kan je het uitbreiden tot een class.
 
Paco de Wulp

Paco de Wulp

10/06/2015 19:08:19
Quote Anchor link
Als mogelijke oplossing voor copy-paste problematiek. Ik zou graag alle functies op één plaats willen hebben en niet verspreid in meerdere PHP-scripts.
 
Eddy E

Eddy E

10/06/2015 19:15:50
Quote Anchor link
Gewoon 1 functions.php maken.
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 ;)
 
Paco de Wulp

Paco de Wulp

10/06/2015 19:16:59
Quote Anchor link
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 ?
Gewijzigd op 10/06/2015 19:22:25 door Paco de Wulp
 
Thomas van den Heuvel

Thomas van den Heuvel

10/06/2015 20:01:37
Quote Anchor link
Not everything on the internet is true.
- 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.
 
Paco de Wulp

Paco de Wulp

10/06/2015 20:28:49
Quote Anchor link
Dat klinkt interessant autoloader. @Frank noemde het al eerder, maar ik wist niet wat dat dan inhield. Thx.
 
Johan K

Johan K

10/06/2015 23:49:51
Quote Anchor link
Dit is met de losse hand geschreven:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

class Validate{

static function email($email){
  return filter_var($email, FILTER_VALIDATE_EMAIL);
}


// etc.

}


if( Validate::email($_POST['email'])){
  // blah blah correct
} else {
  // invalid email.
}

?>


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)
PHP script in nieuw venster Selecteer het PHP script
1
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');
?>
Gewijzigd op 10/06/2015 23:55:41 door Johan K
 
Paco de Wulp

Paco de Wulp

11/06/2015 15:59:12
Quote Anchor link
@Johan K: Thx, ik ga ermee aan de slag.
 

12/06/2015 16:13:00
Quote Anchor link
PHP is bij uitstek een doorgeefluik. Van en naar: de database(s), clients, streams, sockets, EN extenties.
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?
Gewijzigd op 12/06/2015 16:14:49 door
 
Frank Nietbelangrijk

Frank Nietbelangrijk

14/06/2015 03:18:34
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.