Neuere Projekte verwenden das Symfony-Framework, um die Datenbank in diesem Team zu betreiben. Ehrlich gesagt sind die Entwicklungseffizienz und die Betriebseffizienz der Verwendung von ORM nicht unbedingt höher Die Anzahl der ORM-Entitätsattribute ist unterschiedlich und die Datenbankfelder werden durch Unterstriche getrennt. Wenn Sie auf die Notwendigkeit stoßen, das für eine Entität erforderliche Array manuell zu schreiben, bereitet die Feldzuordnung Kopfschmerzen, insbesondere wenn viele Felder vorhanden sind, und Sie müssen sich übergeben. An diesem Punkt tritt ein Problem auf, nämlich die durch Unterstriche getrennten benannten Felder in die CamelCase-Benennung umzuwandeln. Ich bin auch sehr faul. Nachdem ich lange online gesucht habe, konnte ich keine bestimmte PHP-Demo finden. Einige davon sind auch in Java geschrieben und ziemlich kompliziert. Also habe ich es mir zur Aufgabe gemacht, genug Essen und Kleidung zu haben, und habe kurzerhand zwei davon geschrieben:
<?php //微妙时间 function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } //将下划线命名转换为驼峰式命名 function convertUnderline1 ( $str , $ucfirst = true) { while(($pos = strpos($str , '_'))!==false) $str = substr($str , 0 , $pos).ucfirst(substr($str , $pos+1)); return $ucfirst ? ucfirst($str) : $str; } //将下划线命名转换为驼峰式命名 function convertUnderline2 ( $str , $ucfirst = true) { $str = explode('_' , $str); foreach($str as $key=>$val) $str[$key] = ucfirst($val); if(!$ucfirst) $str[0] = strtolower($str[0]); return implode('' , $str); } //第一种方式调用10w次所需时间 $s1 = microtime_float(); for ($i=0;$i<1000;$i++) { $str= 'abcd_efgh_igk_lmn'; convertUnderline1($str); } $e1 = microtime_float(); echo 'convertUnderline1: run time = '; echo $e1-$s1;echo '<br />'; //第二种方式调用10w次所需时间 $s2 = microtime_float(); for ($i=0;$i<1000;$i++) { $str= 'abcd_efgh_igk_lmn'; convertUnderline2($str); } $e2 = microtime_float(); echo 'convertUnderline2: run time = '; echo $e2-$s2;
Warum sollte ich zwei davon schreiben? ihnen? Es gibt zwei verschiedene Verarbeitungsmethoden. Ich möchte sehen, welche effizienter ist.
Nach dem Testen wurde festgestellt, dass die String-Splicing-Methode 0,1 Sekunden langsamer ist als die Array-Verarbeitung. Dies ist natürlich das Ergebnis, das erst nach 100.000-maliger Ausführung jeder Funktion sichtbar ist 10.000 Mal gesehen. Es kann ignoriert werden.
Das Folgende sind die Testergebnisse:
1K-mal ausgeführt:
convertUnderline1: Laufzeit = 0,0050010681152344
convertUnderline2: Laufzeit = 0,0039999485015869
1w-mal ausgeführt:
con vertUnderline1: Laufzeit = 0,05500602722168
convertUnderline2: Laufzeit = 0,036003828048706
10w-mal ausgeführt:
convertUnderline1: Laufzeit = 0,46304702758789
convertUnderline2: Laufzeit = 0,3190 3195381165
Warum String Abfangen und Spleißen Ist es langsamer als die Array-Verkettung? Wenn Sie die unterste Ebene von PHP C gesehen haben, werden Sie es verstehen. Wenn also in Zukunft eine große Anzahl von Zeichenfolgen zu einer Zeichenfolge verkettet werden muss, verwenden Sie keine Punktverkettung. Legen Sie sie in ein Array und verwenden Sie die Implodierungsverkettung.
Eine weitere Sache ist, dass diese Methode auch in JS verwendet wird. Array-Verbindung ist besser als String-Verbindungsblock.
Oben wird erläutert, wie Sie mit PHP die durch Unterstriche getrennte benannte Zeichenfolge in die Benennungsmethode Camel Case umwandeln und den ersten Buchstaben nach dem Unterstrich in Großbuchstaben ändern. Ich hoffe, dass dies für Freunde, die sich für PHP interessieren, hilfreich ist Tutorials.