Mir ist klar dass der Titel dieses Post erstmal Verwirrung stiftet. Denn es hat wieder mit den unmöglichen Tiefen von PHP zu tun, und zwar mit einem Standard. Bis vor einiger Zeit gibt es für PHP aus dem Vendor Team keinen eigenen Standard wie man PHP eigentlich schreibt – also wie man es so schreibt das es lesbar ist und bei jeden gleich aussieht.
Bis zu diesem Zeitpunkt gab es einige Versuche: Zend, Squiz, Pear. Aber das Ergebnis war nie perfekt. Andere Sprachen haben ihren Styleguide bereits dabei, z.B. PEP8 in Python. Auch wurde viel in fremden Welten geklaut, z.B. Code Conventions von Java oder die Entfremdung einiger C Stile brachte so manches Stirnrunzeln vor den Bildschirm. Nun hat die PHP Framework Interop Group mit Ihrem “propose a standards recommendation” einen sehr guten Standard rausgekurbelt der:
- Zu PHP passt
- Die Aktualität berücksichtigt
- Von vielen akzeptiert wird
Die PHP-FIG an sich sich ist eine Gruppe von Personen die versuchen an vielen Ecken und Enden Standards zu schaffen, an die man sich halten kann – aber nicht muss. Herausgekommen ist ein vierteiliges Werk was wiederum auf spezielle Teile von Sprachkonstrukten Einfluss nimmt:
- PSR-0: Beschreibt den Aufbau von Klasssen und Interfaces mit Namespaces. Damit ein Classloader diese laden kann
- PSR-1: Der Codestandard, Dateien, Konstanten, Eigenschaften, …
- PSR-2: Styleguide, Kontrollstrukturen, Einrückungen, usw
- PSR-3: Logger Interface
Über PSR-3 lässt sich streiten aber 0-2 sind super umgesetzt und integriert sich sinnvoll in die Sprache. Nicht zuletzt wird der Standard von vielen Tools bereits unterstützt: PHP CodeSniffer oder PHPStorm, Eclipse. Und viele Projekte sind bereits damit umgesetzt, http://packagist.org feststellen kann.
So schaut es gut aus:
$ phpcs --standard=PSR2 Process.php Time: 0 seconds, Memory: 6.25Mb |
<?php /** * This file is part of DINGS * * DINGS is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * DINGS is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with TKMON. If not, see <http://www.gnu.org/licenses/>. * * @author Marius Hein <marius.hein@netways.de> * @copyright 2012-2013 NETWAYS GmbH <info@netways.de> */ namespace NETWAYS\IO; /** * Specific implementation to FO * @package NETWAYS\IO * @author Marius Hein <marius.hein@netways.de> */ class FileObject extends \SplFileObject { /** * Integrate chmod on that file * @param int $mode * @return bool */ public function chmod($mode) { return chmod($this->getRealPath(), $mode); } } |
Autor: Marius Hein
Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.
- Web |
- More Posts (42)












