Toon posts:

[php] controleren of functie bestaat.

Pagina: 1
Acties:
  • 201 views

  • josvane
  • Registratie: oktober 2002
  • Laatst online: 20-09 21:51
Voor een website wil ik controleren of een functie bestaat, dit om te voorkomen dat er een error ontstaat maar gewoon een eigen 404.

Bij deze site maak een gebruik van een seo geschikte url Bijvoorbeeld: www.example.com/product/artikel
Binnen mijn systeem explode ik de url met de /. Waarbij de product dan een functie is.
Onderstaand een voorbeeldcode.
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
<?php
// Voorbeeld 1
new voorbeeld();

class voorbeeld {
    function __construct(){
        if(is_callable('test')){
            echo 'De functie test bestaat!<br>';
        } else {
            echo 'De functien test bestaat niet!<br>';
        }
    }
    
    function test(){
        echo 'Functie test';
    }
}
// Voorbeeld 2
if(is_callable('test2')){
        echo 'De functie test2 bestaat!<br>';
    } else {
        echo 'De functien test2 bestaat niet!<br>';
    }
function test2(){
    echo 'Functie test2';
}
?>

Dit is het resultaat
code:
1
2
De functien test2 bestaat niet!
De functie test2 bestaat!


Voorbeeld 1 werkt niet, terwijl voorbeeld 2 wel volgens verwachting werkt. Nu wordt voorbeeld 1 binnen een class aangeroepen, en ik vermoedt dat hier ook ergens het probleem zit, maar geen idee hoe ik dit moet oplossen.

Overigens als ik ga googlen op is_callable, krijg ik allemaal voorbeelden zonder dat er gebruik gemaakt wordt van een class. Wel wordt ik iedere keer ook gewezen op de functie functions_exists en method_exists, maar dat is volgens mij niet een methoden die ik nodig heb.

  • Naj_Geetsrev
  • Registratie: oktober 2002
  • Laatst online: 22:51
Als je alleen wilt controleren of een bepaalde functie bestaat dan kun je beter http://nl.php.net/manual/en/function.function-exists.php gebruiken.

En als je wilt controleren of een bepaalde functie binnen een class bestaat http://nl.php.net/manual/en/function.method-exists.php

[Voor 31% gewijzigd door Naj_Geetsrev op 11-11-2010 10:29]


  • thioz
  • Registratie: september 2001
  • Laatst online: 06-11-2018
Je zou eens kunnen kijken naar de method_exists functie van PHP.

Daarnaast is wat je wil doen een veel voorkomend patroon binnen OO en MVC en dat heet FrontController, mischien een goed idee om daar eens op te Googlen ;)

I feel like i've been taking crazy pills


  • Voutloos
  • Registratie: januari 2002
  • Niet online
method_exists() klinkt voor die context ook logischer.

Maar goed, bij is_callable() staat als parameter type 'callback' en deze is gedocumenteerd als
[...]
A method of an instantiated object is passed as an array containing an object at index 0 and the method name at index 1.
[...]
;)

{signature}


  • josvane
  • Registratie: oktober 2002
  • Laatst online: 20-09 21:51
Het is inmiddels gelukt, ik dacht dat method_exists niet de goede was, maar daar werkt het middels de link van naj_geetsrev wel mee.

Thanks.

  • MueR
  • Registratie: januari 2004
  • Laatst online: 01:04

MueR

Moderator Devschuur®

is niet lief

Voortaan beter zoeken in de documentatie dan. Dit is echt basaal 2 minuten Google werk. Daar hebben we je in het verleden al vaker op gewezen. Lees Het algemeen beleid #quickstart nog eens.

Anyone who gets in between me and my morning coffee should be insecure.
Breng nu uw applicatie naar de kloot. Dat is veel beter! Nu samen met klootopslag. Voor maar €9,95. Doei doei!

Pagina: 1

Dit topic is gesloten.



Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee