Kodig-normo
(Farite parte laux
PEAR-standarto
Cxiu programisto havas sian propran stilon de programado, sed cxe lernu! estus bone, se la tuta kodo estu sam-stila. Sur cxi tiu pagxo estas priskribitaj reguloj, kiujn sekvu cxiuj programistoj.
- Malsamaj tekst-redaktiloj foje malsame traktas TAB-ojn, pro tio por desxovoj prefere uzu ne TAB-ojn, sed 4 spacetojn.
- En strukturoj kun if, for, while, switch ks, ekz.:
<?
if ((condition1) || (condition2)) {
action1;
} elseif ((condition3) && (condition4)) {
action2;
} else {
defaultaction;
}
?>
Inter la sxlosilvorto (if, else, for..) kaj la unua ronda krampo estu 1 spaco, por ke aspekte la sintakso diferencu de funkciaj vokoj.
<?
switch (condition) {
case 1:
action1;
break;
case 2:
action2;
break;
default:
defaultaction;
break;
}
?>
- Inter nomo de funkcio, unua ronda krampo kaj unua parametro ne estu spacoj. Se estas multaj paramentoj, listigitaj per komoj, post cxiu komo estu 1 spaco. Spacoj ne devas esti ankaux inter lasta parametro, fermanta ronda krampo kaj punktokomo.
<?
$var = foo($bar, $baz, $quux);
?>
El ambaux flankoj de egalsigno (=) estas por 1 spaco. Se se vi devas skribi blokon de similaj aferoj, vi povas uzi la jenan sistemon:
- Kunigajn krampojn ({}) prefere uzu ecx tiam, kiam ili ne estas nepre bezonataj (ekz: en if-blokoj), tiamaniere la kodo igxas pli legebla kaj gxin estos pli facile modifi. En funkcioj argumentoj(operandoj), kiuj havas defauxltajn valorojn, estu en la fino de la tuta listo. Funkcioj prefere cxiam revenigu iun valoron.
<?
function connect(&$dsn, $persistent = false)
{
if (is_array($dsn)) {
$dsninfo = &$dsn;
} else {
$dsninfo = DB::parseDSN($dsn);
}
if (!$dsninfo || !$dsninfo['phptype']) {
return $this->raiseError();
}
return true;
}
?>
- Neniam estas tro multe da komentoj. :-) Bonvolu komenti vian kodon, por ke aliaj programistoj poste povu facile orientigxi en gxi. Por komentado tauxgas aux /* komento */) aux (//komento).
- Anstataux <? ?>, prefere cxiam uzu <?php ?> etikedojn por montri php-kodon.
- Foje estas utile supre de php-dosiero mallonge priskribi cxi tiun dosieron: por kio gxi bezonatas, kion faras ktp. Eble indas skribi ankaux nomon de programisto, por ke se iu poste havos demandon pri la kodo, li/sxi sciu al kiu turni sin.
<?
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
// +----------------------------------------------------------------------+
// | PHP version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2004 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 3.0 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available through the world-wide-web at the following url: |
// | http://www.php.net/license/3_0.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Authors: Original Author <author@example.com> |
// | Your Name <you@example.com> |
// +----------------------------------------------------------------------+
//
// $Id:$
?>
Sube de cxefa programisto eblas aldoni nomojn de tiuj, kiuj poste grave modifis la kodon: nomon kaj resumon de sxangxoj.
- Indas interkonsenti pri stilo de nomoj de klasoj, funkcioj ktp. Cxiuj nomoj devas esti facile legeblaj kaj kompreneblaj. Se eblas eviti mallongigojn, evitu ilin. Nomoj de klasoj komencigxu per majuskloj, malsamaj klas-niveloj estu skribataj per malsupra streko. Ekzemplaj nomoj: Log, Net_Finger, HTML_Upload_Error. La unua litero en la nomo de funkcioj cxiam estu minuskla, sed postaj komencaj literoj de cxiu vorto en la nomo estu majusklaj: connect(), getData(), buildSomeWidget(). Se funkcioj estas uzataj en iu pakajxo, komence de cxiu funkci-nomo estu nomo de tiu pakajxo, por ke ili ne koincidu kun la samaj nomoj el aliaj pakajxoj: XML_RPC_serializeData(). Privataj funkcioj, kiuj estas uzataj nur ene de iu klaso, komencigxu per malsupra streko: _sort(), _initTree(), $this->_status;
- Nomoj de konstantoj estu skribitaj majuskle kaj cxiuj apartaj vortoj ene de la nomo estu dividitaj per substrekoj. Se ili estas uzataj ene de iu pakajxo aux klaso, la nomoj de konstantoj enhavu nomon de tiu pakajxo/klaso kiel prefikson.
- Se vi ene de via pakajxo volas difini globalan variablon, gxia nomo komencigxu per substreko, poste estu skribita nomo de pakajxo, kiun sekvu alia substreko. Ekzemple, PEAR pakajxo uzas globalan variablon $_PEAR_destructor_object_list.
- Evitu globalajn variablojn, se tio eblas, cxar tre ofte pro ili okazas diversaj eraroj.
- Se vi havas funkciojn, kiuj revenigas informormon pri sukceso aux eraro, prefere cxiam uzu por tio true aux false kaj signon ===. Foje programistoj por tiu celo uzas "0" kaj "1".
- En bibliotekaj dosieroj de PHP, prefere ne uzu funkciojn exit() aux die(), cxar poste estas malfacile kompreni, kio gxuste haltigis vian programon. Ankaux ne estas rekomendite uzi print() kaj/aux echo(), cxar poste povas aperi problemoj pri header() kaj setcookie().
- Programante por lernu! ne forgesu cxiam zorgi pri elsxutebla versio.
- Programante por lernu! ankaux ne forgesu cxiam zorgi, ke la pagxoj bone aspektu en rtl-lingvoj.
- Kiam ni havos dokumentaron pri nia sistemo, necesos cxiam zorgi ankaux pri tio.