Guter PHP-Code sollte strukturiert sein; guter PHP-Code sollte anpassungsfähig sein; guter PHP-Code sollte sicher sein ...
Ich werde das auf jeden Fall fragen, wenn ich Interviewer bei SitePoint bin. Die Frage ist: Was denken Sie? Gibt es Vor- und Nachteile von PHP-Code? Denn diese Frage kann mir eine allgemeine Vorstellung davon geben, um welche Art von Programmierer es sich bei dem Kandidaten handelt, anstatt einfach nur seine Beherrschung der PHP-Funktionen zu testen (die PHP-Zertifizierung von Zend eignet sich gut dafür, und die Interviewfragen für PHP-Programmierer von Yahoo sind ebenfalls solche).
Wichtig ist, dass ich mit dieser Frage weiß, ob der Kandidat schon einmal die Erfahrung gemacht hat, dass er von einem faulen Programmierer ein Stück unordentlichen Code übernommen hat, um ihn wiederzuverwenden, oder ob er anderen Mitgliedern des Teams bei solchen Dingen geholfen hat.
Zugegebenermaßen habe ich selbst keine zufriedenstellende Antwort auf diese Frage, aber ich kenne die Antworten, die ich hören möchte:
Guter PHP-Code sollte strukturiert sein. Große Codeabschnitte sollten in Funktionen oder Methoden unterteilt werden, während kleine Codeabschnitte, die nicht ins Auge fallen, kommentiert werden sollten, damit ihr Zweck später klar wird. Und der Frontend-Code wie HTML, CSS, Javascript usw. sollte so weit wie möglich vom Programm getrennt sein. Die objektorientierten Programmierfunktionen von PHP können Programmierern dabei helfen, ihren Code ordentlich zu organisieren.
Guter PHP-Code sollte standardisiert sein. Ganz gleich, ob es darum geht, Benennungsregeln für Variablen- und Funktionsnamen festzulegen, wiederverwendbare Prozesse wie Datenbankoperationen und Fehlerbehandlung zu standardisieren oder einfach anzugeben, wie Code eingerückt werden soll, diese Standardisierungen können die Lesbarkeit des Codes erheblich verbessern.
Guter PHP-Code sollte anpassungsfähig sein. PHP verfügt über viele Funktionen wie magische Anführungszeichen und kurze Tags. Das Ein- und Ausschalten dieser Funktionen wirkt sich auf die Ausführung des Programms aus. Daher sollte ein guter Programmierer seinem Code entsprechende Anweisungen hinzufügen, damit sich das Programm an die Umgebung anpassen kann.
Guter PHP-Code sollte sicher sein. Obwohl PHP eine effiziente und flexible Sprache ohne festes Framework ist, überlässt es Sicherheitsprobleme den Programmierern. Ein tiefes Verständnis potenzieller Sicherheitslücken wie Cross-Site-Scripting (XSS), Cross-Site-Request-Forgery (CSRF), Code-Injection-Schwachstellen, Zeichenkodierungsschleifen-Schwachstellen usw. ist für heutige professionelle Programmierer von entscheidender Bedeutung.
Wenn ein Kandidat diese Fragen beantwortet, weiß ich genau, ob ich ihn oder sie einstellen sollte. Natürlich können Programmierer das Problem manchmal nicht gut formulieren, und wir bitten sie, einige PHP-Tests durchzuführen. Viele der Fragen im Test mögen auf den ersten Blick sehr einfach erscheinen, geben den Kandidaten aber auch die Möglichkeit, sich zu äußern, denn wenn man genau hinschaut, kann man die Probleme erkennen.
Der folgende kleine „schlechte“ PHP-Code ist eine vereinfachte Testfrage. Diese Frage ist wie die Frage: Wie sollten Sie diesen Code optimieren?
<?
echo("<p>Suchergebnisse für Abfrage: " .
$_GET['query'] . ".</p>");
?>
Das Hauptproblem dieses Codes besteht darin, dass er die vom Benutzer übermittelten Daten direkt auf der Webseite anzeigt, wodurch eine XSS-Schwachstelle entsteht. Es gibt tatsächlich viele Möglichkeiten, dieses Loch zu füllen. Welchen Code wollen wir also?
<?
echo("<p>Suchergebnisse für Abfrage: " .
htmlspecialchars($_GET['query']) ".</p>");
?>
Dies ist die Mindestanforderung. Die XSS-Schwachstelle wurde mit der Funktion htmlspecialchars geschlossen und blockiert so illegale Zeichen.
<?php
if (isset($_GET['query']))
{
echo '<p>Suchergebnisse für Abfrage: ',
htmlspecialchars($_GET['query'], ENT_QUOTES), '.</p>';
}
?>
Leute, die solchen Code schreiben können, sollten diejenigen sein, die ich einstellen möchte.
<? wurde durch <?php ersetzt, was besser mit den XML-Spezifikationen übereinstimmt.
Bevor Sie den Wert von $_GET['query'] ausgeben, stellen Sie zunächst fest, ob er leer ist.
Die zusätzlichen Klammern im Echo-Befehl wurden entfernt.
Zeichenfolgen werden mit einfachen Anführungszeichen qualifiziert, was PHP Zeit bei der Suche nach ersetzbaren Variablen in der Zeichenfolge spart.
Verwenden Sie Kommas anstelle von Punkten, um Echozeit zu sparen.
Übergeben Sie das Flag ENT_QUOTES an die Funktion htmlspecialchars, um sicherzustellen, dass auch einfache Anführungszeichen maskiert werden. Obwohl dies nicht das Wichtigste ist, ist es dennoch eine gute Angewohnheit.
Leider gibt es nur sehr wenige Programmierer, die eine so zufriedenstellende Antwort geben können. Wir haben drei Monate gebraucht, um Programmierer zu rekrutieren, mit denen wir zufrieden waren.
Wie würden Sie also die am Anfang dieses Artikels gestellte Frage beantworten? Was sind Ihrer Meinung nach die Vor- und Nachteile von PHP-Code? Welche weiteren Eigenschaften sollte ein PHP-Programmierer Ihrer Meinung nach haben?
Dieser Artikel stammt von: http://www.yeeyan.com/articles/view/38585/18736
Ursprünglicher Link: http://www.sitepoint.com/blogs/2007/05/25/good-and-bad-php-code/