[PHP] Creer function lijst van files *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Jacco Swart
  • Registratie: Mei 2003
  • Laatst online: 29-08 20:59
Hallo,

ik ben momenteel bezig om een pagina te ontwikkelen maar nu vraag ik me af of er niet een standaard functie cq reeds bestaat script is dat er voorzorgt dat je een keurig lijstje krijgt van alle functies die je in een file heb staan.

In het begin heb ik telkens keurig een lijstje bij gehouden van welke functies er in welke file zitten maar volgens mij moet het slimmer kunnen.......

input file XYZ.php:

<?
function abc($a, $b){
}
function dfs($c, $d){
}

?>

Output:

De file XYZ.php bevat de volgende functies:
function abc($a, $b)
function dfs($c, $d)

www.ya-calendar.com - Gratis online agenda


Acties:
  • 0 Henk 'm!

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 07-11-2023

kvdveer

Z.O.Z.

De meest eenvoudige methode is de volgende:
PHP:
1
2
3
4
$x = get_defined_functions();
include('bestand');
$y = get_defined_functions();
$z = array_diff($x,$y);


Denk je trouwens ook nog aan constructies als:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
// class functions
class Foo {
   function Foo {

  }
}

// custom defined functions
$a = create_function('$a,$b','echo $a,$b;');

// defined functions via evil (c)
eval('function bar() {echo "Bar";}');

[ Voor 10% gewijzigd door kvdveer op 02-08-2003 11:02 ]

Localhost, sweet localhost


Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Ff zoeken op php.net in het vervolg :) :

http://nl.php.net/manual/en/function.get-defined-functions.php

Zie ook:

P&W FAQ en de Quickstart :)

edit:
spuit 11

[ Voor 6% gewijzigd door RedRose op 02-08-2003 11:41 ]

Sundown Circus


Acties:
  • 0 Henk 'm!

  • Jacco Swart
  • Registratie: Mei 2003
  • Laatst online: 29-08 20:59
Oeps....... :o

Bedankt!!

www.ya-calendar.com - Gratis online agenda


Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

kvdveer schreef op 02 August 2003 @ 11:01:
De meest eenvoudige methode is de volgende:
PHP:
1
2
3
4
$x = get_defined_functions();
include('bestand');
$y = get_defined_functions();
$z = array_diff($x,$y);
Deze geeft met php 4.3.2 een leeg array terug, terwijl in $x het [user] deel leeg is, en in $y gevuld :?

[edit]
array_diff($y, $x) geeft wel het gewenste resultaat :)

[ Voor 14% gewijzigd door TheRookie op 03-08-2003 10:35 ]


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Dit gaat toch nooit werken met classes e.d., zoals Koert al zegt. Of je moet zelf een hele parser schrijvend ie je code gaat uitpluizen, maar zelfs dan is het nog niet 100% safe..

Beter is gewoon een goede opbouw en documentatie van je libraries bij te houden.. das ook een stuk gebruikelijker ;)

Als je je commenting GOED bijhoudt, kun je software als PHPDoc (http://www.phpdoc.de/) gebruiken om al je classes/functies mooi in documentatie te zetten. Das het enige wat echt goed werkt, aangezien je alleen aan een functie-naam ook niet zoveel ziet wat ie doet, welke argumenten die nodig heeft, welke verplicht zijn, welke niet, welk formaat die dit graag wilt hebben, etc, etc..

PHPDoc dus ;)

[ Voor 43% gewijzigd door Bosmonster op 03-08-2003 11:45 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je zou het trouwens heel vies kunnen oplossen door domweg een preg_match_all te schrijven die iets ala /\sfunction\s[a-z0-9_]+(...){/ matched, maar ook daar kan je niet context-aware werken en alle create_function-achtige-zaken opvangen.

[ Voor 4% gewijzigd door ACM op 03-08-2003 11:54 ]

Pagina: 1