Als PHP-Programmierer hoffe ich natürlich, dass die Qualität meines PHP-Codes sehr hoch ist. Dieser Artikel teilt Ihnen hauptsächlich Methoden zur Verbesserung der Qualität von PHP-Code mit und hofft, allen zu helfen.
1. Verwenden Sie keine relativen Pfade
Sie sehen oft:
require_once('../../lib/some_class.php');
Diese Methode weist viele Mängel auf:
Es sucht zuerst nach dem angegebenen PHP-Include-Pfad und dann nach dem aktuellen Verzeichnis
Es werden also zu viele Pfade überprüft
Wenn das Skript von einem Skript eingebunden wird in einem anderen Verzeichnis ist es im Grunde das Verzeichnis, in dem sich ein anderes Skript befindet.
Ein weiteres Problem: Wenn die geplante Aufgabe das Skript ausführt, ist das übergeordnete Verzeichnis möglicherweise nicht das Arbeitsverzeichnis.
Die beste Wahl ist also „Absolute Pfade verwenden“:
define('ROOT' , '/var/www/project/');require_once(ROOT . '../../lib/some_class.php');//rest of the code
Wir haben einen absoluten Pfad definiert und der Wert ist fest codiert. Wir können ihn auch verbessern , also müssen wir es jedes Mal ändern? Nein, wir können die __FILE__-Konstante verwenden, wie zum Beispiel:
//suppose your script is /var/www/project/index.php//Then __FILE__ will always have that full path.define('ROOT' , pathinfo(__FILE__, PATHINFO_DIRNAME));require_once(ROOT . '../../lib/some_class.php');//rest of the code
Egal in welches Verzeichnis Sie wechseln, z. B. auf einen externen Server , der Code muss nicht korrekt ausgeführt werden.
Sie können mehrere Dateien am Anfang des Skripts einfügen. wie Klassenbibliotheken, Tooldateien und Hilfsfunktionen, wie zum Beispiel:
require_once('lib/Database.php');require_once('lib/Mail.php');require_once('helpers/utitlity_functions.php');
Diese Verwendung ist recht primitiv. Es sollte eine flexiblere Hilfsfunktionsdatei geschrieben werden
function load_class($class_name){ //path to the class file $path = ROOT . '/lib/' . $class_name . '.php'); require_once( $path ); } load_class('Database'); load_class('Mail');
function load_class($class_name){ //path to the class file $path = ROOT . '/lib/' . $class_name . '.php'); if(file_exists($path)) { require_once( $path ); } }
define('ENVIRONMENT' , 'development');if(! $db->query( $query ) { if(ENVIRONMENT == 'development') { echo "$query failed"; } else { echo "Database error. Please contact administrator"; } }
define('ENVIRONMENT' , 'production');if(! $db->query( $query ) { if(ENVIRONMENT == 'development') { echo "$query failed"; } else { echo "Database error. Please contact administrator"; } }
/** Method to execute a command in the terminal Uses : 1. system 2. passthru 3. exec 4. shell_exec */ function terminal($command) { //system if(function_exists('system')) { ob_start(); system($command , $return_var); $output = ob_get_contents(); ob_end_clean(); } //passthru else if(function_exists('passthru')) { ob_start(); passthru($command , $return_var); $output = ob_get_contents(); ob_end_clean(); } //exec else if(function_exists('exec')) { exec($command , $output , $return_var); $output = implode("\n" , $output); } //shell_exec else if(function_exists('shell_exec')) { $output = shell_exec($command) ; } else { $output = 'Command execution not possible on this system'; $return_var = 1; } return array('output' => $output , 'status' => $return_var); } terminal('ls');
function add_to_cart($item_id , $qty){ $_SESSION['cart']['item_id'] = $qty; } add_to_cart( 'IPHONE3' , 2 );
function add_to_cart($item_id , $qty){ if(!is_array($item_id)) { $_SESSION['cart']['item_id'] = $qty; } else { foreach($item_id as $i_id => $qty) { $_SESSION['cart']['i_id'] = $qty; } } } add_to_cart( 'IPHONE3' , 2 ); add_to_cart( array('IPHONE3' => 2 , 'IPAD' => 5) );
<?phpecho "Hello";//Now dont close this tag
<?phpclass super_class{ function super_function() { //super code } }?>//super extra character after the closing tag
require_once('super_class.php');//echo an image or pdf , or set the cookies or session data
Gewöhnen Sie sich daher an, das Schlusszeichen wegzulassen:
Das wird besser.<?phpclass super_class{ function super_function() { //super code } }//No closing tag
7. Sammeln Sie alle Eingaben irgendwo und geben Sie sie auf einmal an den Browser aus.
function print_header(){ echo "<p id='header'>Site Log and Login links</p>"; }function print_footer(){ echo "<p id='footer'>Site was made by me</p>"; } print_header();for($i = 0 ; $i < 100; $i++) { echo "I is : $i <br />'; } print_footer();
function print_header(){ $o = "<p id='header'>Site Log and Login links</p>"; return $o; }function print_footer(){ $o = "<p id='footer'>Site was made by me</p>"; return $o; }echo print_header();for($i = 0 ; $i < 100; $i++) { echo "I is : $i <br />'; } echo print_footer();
>>Sie können die Ausgabe ändern, bevor Sie sie an den Browser senden, zum Beispiel die Funktion str_replaces oder vielleicht preg_replaces oder einige Überwachungs-/Debugging-HTML-Inhalte hinzufügen.
>>Ausgabe an den Browser und gleichzeitig ist die Verarbeitung von PHP schrecklich. Sie sollten Fehlermeldungen in der Seitenleiste oder in der Mitte sehen. Haben Sie eine Ahnung, warum das passiert?
8 die korrekten MIME-Typ-Header-Informationen, wenn Nicht-HTML-Inhalte ausgegeben werden
Funktioniert gut$xml = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>'; $xml = "<response> <code>0</code> </response>";//Send xml dataecho $xml;
$xml = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>'; $xml = "<response> <code>0</code> </response>";//Send xml dataheader("content-type: text/xml");echo $xml;
JavaScript
CSSheader("content-type: application/x-javascript"); echo "var a = 10";
header("content-type: text/css");echo "#p id { background:#000; }";
Vor php5.4 war die Standardkodierung von Zeichen ISO-8859-1, die nicht direkt ausgegeben werden kann, wie z. B. À âetc
$value = htmlentities($this->value , ENT_QUOTES , CHARSET);
php5.4以后, 默认编码为UTF-8, 这將解决很多问题. 但如果你的应用是多语言的, 仍然要留意编码问题,.
Das obige ist der detaillierte Inhalt vonMöglichkeiten zur Verbesserung der PHP-Codequalität. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!