Programs are ment to be read by humans and only incidentally for computers to execute

Donald Knuth

1. Vispārīgi

      1. Failos JĀLIETO tikai <?php un <?= tegi
      2. Failos JĀLIETO tikai UTF-8 without BOM kodējums
      3. Klašu nosaukumiem JĀBŪT deklarētiem StudlyCaps stilā
      4. Klases konstantes JĀDEKLARĒ UPPER_CASE stilā
      5. Metodēm JĀBŪT deklarētām camelCase stilā
      6. Mainīgajiem JĀBŪT deklarētiem snake_case stilā
      7. Atkāpēm jābūt “tab” simbolam, nevis atstarpēm

 

<?php
namespace Vendor\Model;

use FooClass;
use BarClass as Bar;
use Libs\Helpers\Presenter;

class MyClassName
{
    const VERSION = '1.0';
    public my_variable = 'var';

    public function myFunctionName( $arg = [] )
    {
        return $arg;
    }

}

 

2. Pārskats

      1. Nevar būt strikts limits rindas garumam; tas varētu būt aptuveni 120 simboli;
      2. Jābūt vienai brīvai rindai pēc namespace deklarēšanas un jābūt brīvai rindai pēc use bloka deklarēšanas;
      3. Klases atverošai iekavai jāatrodas jaunā rindā un aizverošā iekava ir jaunā rindā pēc klases ķermeņa;

 

2.1 Atslēgvārdi

PHP atslēgvārdi jāraksta lower case.

Tādas PHP konstantes kā true, false un null raksta lower case.

 

 2.2 Klases, īpašības un metodes

 

2.2.1 extends un implements

Atslēgvārdiem extends un implements jābūt deklarētiem tajā pašā rindā, kur ir atslēgvārds class.

Klases atverošai iekavai jāatrodas jaunā rindā un aizverošā iekava ir jaunā rindā pēc klases ķermeņa.

 


<?php
namespace Vendor\Model;

class MyClassName extends ParentClass implements \ArrayAccess, \Countable
{
    // konstantes, īpašības, metodes
}

 

Implemenējošo klašu saraksts var tikts pārnests uz jaunām rindām, ja to daudzums sasniedz pārāk līnijas maksimālo garumu. Ja tas tā notiek, katra implementācija atrodas jaunā rindā, kas ir, katrā rindā var būt tikai viena implementācija;

 

namespace Vendor\Model;

class MyClassName extends ParentClass implements
    \ArrayAccess,
    \Countable,
    \Serializable
{
    // konstantes, īpašības, metodes
}

 

2.2.2 Īpašības

Īpašību redzamībai jābūt deklarētai visiem mainīgajiem.

Atslēgvārds var nedrīkst tikt izmantots deklarējot īpašības.

Vienā rindā nedrīks deklarēt vairāk kā vienu īpašību.

Nedrīkst deklarēt privātās īpašības ar apakšsvītru sākumā.

 

<?php
class ClassName
{
    public $foo = null;
}

 

2.2.3 Metodes

Redzamībai jābūt deklarētai vismām metodēm.

Privātās vai aizsargātās metodes nedrīkst deklarēt ar apakšsvītru sākumā.

Pēc metodes deklarēšanas nedrīkst lietot atstarpi. Atverošai figūriekavai jāatrodas jaunā rindā, pēc metodes nosaukuma, bet aizverošā, pēc metodes ķermeņa beigām.

Metodes deklarēšanai jaizskatās sekojoši:

<?php
namespace Vendor\Package;

class ClassName
{
    public function fooBarBaz( $arg1, &$arg2, $arg3 = [] )
    {
        // metodes ķermenis
    }
}

 

2.2.4 Metožu argumenti

Argumentu sarakstā nedrīkst lietot atstarpes pirms komatiem un JĀLIETO atstarpe pēc katra komata.

Argumenti ar standartvērtībām jāatrodas funkcijas argumentu saraksta beigās.

 

<?php
namespace Vendor\Package;

class ClassName
{
    public function fooBarBaz( $arg1, &$arg2, $arg3 = [] )
    {
        // metodes ķermenis
    }
}

 

Argumentu saraksts var tikt sadalīts vairākās rindās. Darot tā, pirmajam argumentam jāatrodas jaunā rindā un katrs nākamais arguments arī atrodas jaunā rindā. Funkcijas aizverošā iekava atrodas jaunā rindā, bet atverošā iekava tajā pašā rindā atdalīta ar atstarpi.

 

<?php
namespace Vendor\Package;

class ClassName
{
    public function fooBarBaz(
        ClassTypeHint $arg1,
        &$arg2,
        array $arg3 = []
    ) {
        // metodes ķermenis
    }
}