Avatar billede jumping_jack Nybegynder
20. april 2006 - 10:26 Der er 9 kommentarer og
1 løsning

Vis hvilke class's og functions der er i en fil

Jeg kunne godt tænke mig at vide om man kunne få PHP til at vise hvilke classer og functioner der er i en given php fil.
Grunden til dette er, at jeg vil lave et class/functions bibliotek,
hvor der skal være mulighed for at få vist hvilken classer og functioner der er, og muligvis også en beskrivelse af hvad lige netop den function skal bruges til.
Avatar billede coderdk Praktikant
20. april 2006 - 10:32 #1
PHP5 har jo reflection, det kan man vel bruge :)

Kig på denne class browser: http://sourceforge.net/projects/phpclassbrowser/
Avatar billede jumping_jack Nybegynder
20. april 2006 - 11:23 #2
Den på sourceforge virker ikke rigtig synes jeg.
Jeg har prøvet at gå ind på php.net og finde ud af noget med reflection, men der skal man vide hvad der ligger af functioner, før den vil poste det.
den tager ikke automatisk og laver en liste
Avatar billede jumping_jack Nybegynder
20. april 2006 - 13:07 #3
Det skal være et bibliotek over de classer jeg selv har lavet, og ikke dem der er standard.
Men jeg tænkte på om hvordan man kan gøre sådan at man f.eks. har følgende.

<?
class fisk {


    /**
    * Beskrivlse:
    *
    * Dette er en function som vil vise dig en fisk
    */
    function fisk(){
        $fisk = "torsk";
    }
   
    /**
    * Beskrivlse:
    *
    * Dette er en function som vil vise dig en fisk's navn
    */
    function fiskNavn(){
        $fisknavn = "Julius";
    }
}

class tid {

    function tid(){
        $timer = 125;
    }
}

class ged {

    function ged(){
        $navn = "henas";
    }
}
?>

så skal den tage og splitte fra starten på en class, finde de functioner der er i netop den class, og gå videre til den næste.
Og mens den er i en class, skal den tage og finde uf af om der er en beskrivelse som i eksemplet.
Er dette muligt.
Jeg sidder og prøver lidt nu, men kan ikke få den til at gøre det ordentligt.
Avatar billede fangel Nybegynder
20. april 2006 - 15:18 #4
Ja, den ene måde at gøre det på en en simpel tekst-analyse af filen ved at søge efter "class [navn] " og "function [navn] " via reg.exp. og køre hele filen igennem..

Alternativt (jeg ved ik hvor klogt denne løsning er - min proof-of-concept kode kan være tvivlsom) kan der laves noget ala

<?php

$_classes = get_declared_classes();
$_functions = get_declared_functions();

include "din_fil.php";

$new_classes = array_diff(get_declared_classes(), $_classes);
$new_functions = array_diff(get_declared_functions(), $_functions);

?>

Når du kender funktioner og klasserne kan du via Reflection-api'et finde ud af de ting du gerne vil (Reflection-api'et kan også finde phpdoc-kommentare-blokke)

Morten
Avatar billede jumping_jack Nybegynder
21. april 2006 - 08:44 #5
Hey fangel.
Med nogle få ændringer (get_defined_functions istedet for get_declared_functions) så virkede det.
men så skal jeg bare finde ud af at den også skal vise de functioner som findes inde i en class.
Men smid et svar, så får du dine fortjente point.
Avatar billede fangel Nybegynder
21. april 2006 - 10:39 #6
Heh - sådan kan det gå..

Reflection kan sagtens finde funktioner..

Noget i dur af
$class = new ReflectionClass('class-navn');
$funcs = $class->getFunctions(); // det hedder den ik - men noget i den dur.. kan ik huske det på stående fod.. tjek manualen

--

Bare behold point selv.. jeg er her så sjællent og har så mange point at det er lige meget.. (jeg kigger kun forbi spm. der er "interesante".. ;) hehe)

Morten
Avatar billede jumping_jack Nybegynder
21. april 2006 - 10:43 #7
Jeg fandt ud af det, så nu virker mit class/functions bibliotek.
og det er bare i orden, så snupper jeg dem selv.
Men fortsat godt liv, hvis vi ikke mødes igen :)
Avatar billede fangel Nybegynder
21. april 2006 - 11:01 #8
Det er slet ikke umuligt at fange mig - tjek min profil og så lidt googling burde finde ganske mange måder at stille spm. til mig på..

Jeg er næsten altid frisk hvis det er mere... advancerede.. issues det handler om ;)

Morten
Avatar billede jumping_jack Nybegynder
21. april 2006 - 11:05 #9
ja jeg læste godt nok din profil.
glæder mig til at se dit "nye eksperten" :)
Avatar billede fangel Nybegynder
21. april 2006 - 11:13 #10
Den er "startet" (selvom vi dog er igang med redesign/omkodning.. google lidt rundt så skal du nok finde den)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester