Erstellen Sie dynamisch PHP-Klassenfunktionen oder -Funktionen

巴扎黑
Freigeben: 2016-11-29 11:07:25
Original
1638 Leute haben es durchsucht

1. Grundlegende

Variablenfunktion:

<?php  
$func = &#39;test&#39;;  
  
function test(){  
    echo &#39;yes !&#39;;  
}  
  
$func();  
?>
Nach dem Login kopieren
Zufallsfunktion:

<?php  
$newfunc = create_function(&#39;$a,$b&#39;, &#39;return $a.$b;&#39;);  
echo "New anonymous function: $newfunc<br>";  
echo $newfunc(&#39;just&#39;, &#39;coding&#39;);  
?>
Nach dem Login kopieren
create_function – Erstellen Sie eine anonyme (Lambda-) style)-Funktion

Erstellt eine anonyme Funktion. Diese Funktion wird hauptsächlich in den Rückruffunktionen von unsort und array_walk verwendet

$a, $b sind Parameter, 'return $a, $b' ist der Code der Funktion

Rückruffunktion:

<?php     
//5.3 以前     
$array = array( &#39;asbc&#39;, &#39;ddd&#39;, &#39;tttt&#39;, &#39;qqq&#39;);     
array_walk($array,create_function(&#39;&$item&#39;,&#39;$item=strtoupper($item);&#39;) ); //function(&$itm){$itm = strtoupper($itm);}     
print_r($array);  
  
//5.3 以后     
$array = array( &#39;asbc&#39;, &#39;ddd&#39;, &#39;tttt&#39;, &#39;qqq&#39;);     
array_walk($array,function(&$itm){$itm = strtoupper($itm);});      
print_r($array);  
?>
Nach dem Login kopieren
array_walk(array,function,userdata...)

array_walk()-Funktion wendet eine Rückruffunktion auf jedes Element im Array an. Gibt bei Erfolg TRUE zurück, andernfalls FALSE.

Normalerweise akzeptiert eine Funktion zwei Parameter. Als erster Wert wird der Wert des Array-Parameters und als zweiter der Schlüsselname verwendet. Wenn der optionale Parameter userdata angegeben wird, wird er als dritter Parameter an die Callback-Funktion übergeben.

2. Instanzen erstellen dynamisch Klassenfunktionen

<?php  
/* create class */  
class Record {  
    
    /* record information will be held in here */  
    private $info;  
    
    /* constructor */  
    function Record($record_array) {  
        $record_array[&#39;body&#39;] = &#39;this is a new attribution&#39;;  
        $this->info = $record_array;  
    }  
    
    /* dynamic function server */  
    function __call($method,$arguments) {  
        $meth = $this->from_case(substr($method,3,strlen($method)-3));  
        return array_key_exists($meth,$this->info) ? $this->info[$meth] : false;  
    }  
    
    function from_case($str) {  
        $str[0] = strtolower($str[0]);  
        $func = create_function(&#39;$c&#39;, &#39;return "_" . strtolower($c[1]);&#39;); // function ($c) { return "_" . strtolower($c[1]); }  
        return preg_replace_callback(&#39;/([A-Z])/&#39;, $func, $str);  
    }    
}  
  
  
/* usage */  
$Record = new Record(  
    array(  
        &#39;id&#39; => 12,  
        &#39;title&#39; => &#39;Greatest Hits&#39;,  
        &#39;description&#39; => &#39;The greatest hits from the best band in the world!&#39;  
    )  
);  
  
/* proof it works! */  
echo &#39;The ID is:  &#39;.$Record->getId().&#39;<br>&#39;; // returns 12    
echo &#39;The Title is:  &#39;.$Record->getTitle().&#39;<br>&#39;; // returns "Greatest Hits"  
echo &#39;The Description is:  &#39;.$Record->getDescription().&#39;<br>&#39;; //returns "The greatest hits from the best band in the world!"  
echo &#39;The Body is:  &#39;.$Record->getBody(); //returns "The greatest hits from the best band in the world!"  
?>
Nach dem Login kopieren
Die wichtigsten Punkte sind: __call und create_function


Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage