{"id":62,"date":"2008-08-19T12:58:31","date_gmt":"2008-08-19T11:58:31","guid":{"rendered":"http:\/\/blog.till.de\/?p=62"},"modified":"2009-05-23T16:08:33","modified_gmt":"2009-05-23T15:08:33","slug":"hilfsfunktionen","status":"publish","type":"post","link":"https:\/\/blog.till.de\/allgemein\/hilfsfunktionen\/","title":{"rendered":"Hilfsfunktionen"},"content":{"rendered":"

In PHP gibt es eine ganze Reihe von Hilfsfunktionen mit denen man z.B. den Inhalt einer Variablen auf einen bestimmten Datentyp hin untersuchen kann, ob eine bestimmte Variable oder Konstante definiert ist, ob eine Datei existiert oder auch ob eine bestimmte Methode oder Funktion existiert.<\/p>\n

W\u00e4hrend all diese Funktionen vor allem f\u00fcr einen sicheren Programmablauf ben\u00f6tigt werden lassen sich mit den beiden letztgenannten Funktionen einige Programmabl\u00e4ufe durch ihre Dynmaik vereinfachen und selbst die Kompatibilit\u00e4t f\u00fcr verschiedene PHP-Versionen l\u00e4ßt sich damit beeinflußen.<\/p>\n

<\/p>\n

Als erstes betrachten wir die M\u00f6glichkeit der variablen Funktionsaufrufe: So ist es in PHP m\u00f6glich den Inhalt von Variablen als Funktions-\/Methodenname zu benutzen und die Funktion \u00fcber die Variable aufzurufen:
\n
\n$input = 2;
\n\/\/ diese Funktionen sollen berechnet werden
\n$functions = array( 'cos', 'sin', 'tan', 'XYZ' );
\nforeach( $functions as $function ){
\n\/\/ per Hilfsfunktion \u00fcberpr\u00fcfen, ob es eine Funktion
\n\/\/ mit diesem Namen \u00fcberhaupt gibt um Laufzeitfehler
\n\/\/ zu vermeiden
\nif( function_exists( $function ) ){
\n\/\/ Ausgabe des Funktionsnamens
\nprint $function.'('.$input.') = ';
\n\/\/ Aufruf der Funktion anhand des Wertes von $function
\nprint $function( $input );
\nprint \"\\n\";
\n}
\n}
\n<\/code>
\nObiger Code erzeugt folgende Ausgabe:
\n
\ncos(2) = -0.416146836547
\nsin(2) = 0.909297426826
\ntan(2) = -2.18503986326
\n<\/code>
\nCos, sin und tan sind Standardfunktionen von PHP. XYZ gibt es nicht (wurde auch nicht im Beispiel als eigenst\u00e4ndige Funktion erstellt) deshalb wird die Schleife daf\u00fcr nicht ausgef\u00fchrt.<\/p>\n

Das ganze funktioniert f\u00fcr jede zum Zeitpunkt des Aufrufs bekannte Funktion (und auch bei Methoden von Klassen – $obj->$function() ) – inklusive selbst definierter. Anstelle die Funktionsnamen aus einem Array auszulesen kann man sie nat\u00fcrlich auch aus jeder anderen Quelle (z.B. Benutzereingabe) \u00fcbernehmen. Die M\u00f6glichkeiten sind endlos – allerdings sollte man dann die Sicherheit nicht vergessen und z.B. Benutzereingaben nicht ungefiltert \u00fcbernehmen.<\/p>\n

Mit der Funktion „function_exists“ l\u00e4ßt sich auch die Kompatibilit\u00e4t zwischen verschiedenen PHP-Versionen gew\u00e4hrleisten. Zum einen kann man nat\u00fcrlich pr\u00fcfen, ob es eine bestimmte neue Funktion gibt und diese dann ausf\u00fchren oder alternativ eine andere alte benutzen.
\nSch\u00f6ner ist es nat\u00fcrlich, wenn man die neue Funktion in der alten Version mit der selben Signatur selbst erstellt. Normalerweise g\u00e4be es sp\u00e4ter einen Fehler, wenn das Skript auf der neuen PHP-Version eingesetzt wird, weil bei der Deklaration der eigenen Funktion eine Funktion mit dem selben Namen bereits existiert. Dieses l\u00e4ßt sich einfach umgehen indem man die Deklaration innerhalb eines if-Blocks macht und als Bedingung angibt, dass der Block nur ausgef\u00fchrt werden soll, wenn es keine Funktion mit diesem Namen gibt.
\n
\nif( !function_exists( 'scandir' ) ){
\nfunction scandir( $directory, $sorting_order, $context ){
\n\/\/ ...
\n}
\n}
\n<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"

In PHP gibt es eine ganze Reihe von Hilfsfunktionen mit denen man z.B. den Inhalt einer Variablen auf einen bestimmten Datentyp hin untersuchen kann, ob eine bestimmte Variable oder Konstante definiert ist, ob eine Datei existiert oder auch ob eine bestimmte Methode oder Funktion existiert. W\u00e4hrend all diese Funktionen vor allem f\u00fcr einen sicheren Programmablauf… Weiterlesen »Hilfsfunktionen<\/span><\/a><\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","neve_meta_reading_time":"","_themeisle_gutenberg_block_has_review":false,"_ti_tpc_template_sync":false,"_ti_tpc_template_id":"","footnotes":""},"categories":[],"tags":[64,63],"_links":{"self":[{"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/posts\/62"}],"collection":[{"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/comments?post=62"}],"version-history":[{"count":0,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/posts\/62\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/media?parent=62"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/categories?post=62"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.till.de\/wp-json\/wp\/v2\/tags?post=62"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}