Skip to content

Instantly share code, notes, and snippets.

@dingo-d
Last active September 6, 2016 07:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dingo-d/42ab46fe6062a4bf76d7083038def858 to your computer and use it in GitHub Desktop.
Save dingo-d/42ab46fe6062a4bf76d7083038def858 to your computer and use it in GitHub Desktop.
Neki savjeti za coding standarde...

Standardi kodiranja za WordPress

https://make.wordpress.org/core/handbook/best-practices/coding-standards/php/ https://make.wordpress.org/core/handbook/best-practices/coding-standards/javascript/ https://make.wordpress.org/core/handbook/best-practices/coding-standards/css/

ISSUES

Yoda checks:

Primjer

if ( true == $the_force ) {
	$victorious = 'you will be';
}

Osim za <, >, <= i >= jer se ti teško čitaju.

Strict comparisons

== vs === (!= vs !==)

Primjer

$a = '1'; // gettype($a) == string
$a == 1 ? 'True' : 'False' // True
$a === 1 ? 'True' : 'False' // False

Strict usporedba (===) provjerava vrijednost i tip varijable.

Komentari

Svaki file mora imat docBlock opis što radi taj file. .Svaka funkcija mora imat docBlock komentar ispred nje (Sublime ima DocBlockr paket, samo se upiše /** ispred funkcije i stisne tab i sve pokupi (argumente funkcije i sve)). Prije docBlock tagova mora biti jedno prazno mjesto, kod funkcija poslije docBlock komentara ne smije biti razmaka. https://phpdoc.org/about

Primjer

<?php
/**
 * File php
 *
 * @package Cool_file
 * @since 1.0.0
 */

/**
 * [my_cool_function description]
 *
 * @return [type] [description]
 */
function my_cool_function() {
	// Cool komentar o cool funkciji.
	return 'I\'m cool!';
}

Svaki inline komentar mora početi sa velikim slovom i razmakom od znaka komentara te mora završiti sa ., ! ili ?

Razmaci između zagrada

Kod pisanja funckija, ako nije prazna, mora biti po 1 razmak sa svake strane

Primjer

$this_cat = get_category( get_query_var( 'cat' ), false );  OK

$this_cat = get_category(get_query_var('cat'), false);  NIJE OK

Kod if-else statementa isto

if ( true == $a ) {
	echo 'True';
} else {
	echo 'False';
}

Ovo je loše:

if (true == $a){
	echo 'True';
}
else{
	echo 'False';
}

Ovo je katastrofa:

if(true==$a)
	echo 'True';

Tabovi umjesto spaceva

Code indent ide sa 4 taba, ne sa 4 spacea. Možete to postaviti u user settingsima, ili dolje desno u kutu di piše Tab Size (ima čak i convert opcija). Znači ona prva indent using spaces mora biti off, a tab size na 4.

Empty line na kraju

Na kraju svakog dokumenta treba bit i jedan prazan red.

Provjera superglobal varijabli

Kod superglobalnih varijabli ($_POST, $_GET, etc.) treba biti oprezan i sanitizirati ih.

Primjer

if ( isset( $_POST['auth_step'] ) && 'Yes' === $_POST['auth_step'] ) { // Input var okay

Nonce verifikacije

Sve forme bi trebale imati nonce check (https://codex.wordpress.org/WordPress_Nonces)

Escapeanje na outputu

Kad god se nešto echoa treba sanitizirati to što se outputa. Tu treba biti oprezan i vidjeti da li se optputa npr wp_kses funkcija koja je sama po sebi sanitizacijska funkcija.

Sanitizacija kod upisa u bazu

Sve što se upisuje u bazu mora biti sanitizirano. Da li se radi o update_options, wp_set_post_terms ili mySQL querijima, treba paziti što se unosi u bazu (pogotovo ako se radi o nečemu što user može unjeti sa front enda - submit forme i sl.)

Primjer

update_option( 'ANALYTIFY_REDIRECT_URI', esc_url_raw( wp_unslash( $_POST['analytify_redirect_uri'] ) ) ); // Input var okay.

https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/wiki/Fixing-errors-for-input-data

Imenovanje filea

Sve file bi trebale biti imenovane sa - a ne sa _

Primjer

output_saved_breadcrumbs_area.php NOT GOOD

output-saved-breadcrumbs-area.php GOOD

Imenovanje varijabli

Za imenovanje varijabli se koristi snake_case

Primjer

$cool_var  OK

$coolVar  NOT OK

Za imenovanje klasa koristimo CamelCase

Primjer

class MyCoolClassName  OK

class My_Cool_Class_Name  NOT OK

INSTALIRANJE LINTERA

Prvo treba instalirati node.js

https://nodejs.org/en/download/

Jednom kad je instaliran, u command prompt se dodaju linteri

npm install -g jshint npm install -g csslint

I onda u Sublimeu se instalira SublimeLinter i jshint i csslint za sublime lintere.

za php code sniffer treba instalirati PEAR

http://pear.php.net/manual/en/installation.getting.php

Ja sam ga nakačio na XAMPP lokalnu instalaciju i sve radi.

U command promptu se upiše

pear install PHP_CodeSniffer

Ako to ne radim može se koristiti Composer (https://getcomposer.org/) za instalaciju.

Nakon toga samo u sublime dodate phpcs i onda bi trebalo u command prompt dodat path instalacije phpcs-a

phpcs --config-set installed_paths /path/to/wpcs

Linkovi http://subharanjan.com/setup-php-codesniffer-along-wordpress-coding-standards-windows-xampp/ https://github.com/SublimeLinter/SublimeLinter3 https://github.com/squizlabs/PHP_CodeSniffer https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards

E da, instalirajte si SublimeText3, bolji je i sve radi...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment