Užitečné vkládání kódu (úryvky) pro WordPress. PHP kód ve WordPressu - doporučené postupy Bezkonfliktní propojení skriptů a stylů ve WordPressu

Aby bylo zajištěno, že kód WordPress bude všude navržen ve stejném stylu a bude snadno čitelný v jádru, zásuvných modulech a motivech, doporučuje se dodržovat standardy kódování přijaté vývojáři WordPress. Tyto standardy jsou velmi podobné standardu PEAR, ale jsou zde značné rozdíly. Doporučuji se s nimi seznámit a pokud možno se jimi řídit při tvorbě pluginů nebo témat.

Kromě standardů pro psaní samotného PHP kódu existují také standardy pro dokumentování kódu - jedná se o komentáře k funkcím a hákům: PHP Documentation Standards (anglicky)

Jednoduché a dvojité uvozovky

Pokud v řetězci nejsou žádné proměnné, použijte jednoduché uvozovky, jinak dvojité uvozovky. Uvozovky v řetězci není nutné uvozovat, a pokud jsou přítomny, doporučuje se je střídat:

Echo "Název odkazu"; echo "$linkname";

Druhý řádek v tomto příkladu nevymaže výstupní proměnné, což je nutné provést z bezpečnostních důvodů. Proto pro takový zápis musí být proměnné předem vymazány. Obecně lze takovou nahrávku považovat za nepřijatelnou! Viz část výukového programu o bezpečném výstupu.

Odsazení

Odsazení by mělo vždy ukazovat logickou strukturu kódu. Používejte spíše tabulátory (klávesu Tab) než mezery – to poskytuje větší flexibilitu. Mezery by se měly používat, když potřebujete něco zarovnat v rámci řádku.

Pravidlo: tabulátory by měly být použity na začátku řádku pro odsazení, zatímco mezery mohou být použity uprostřed řádku pro zarovnání.

If (podmínka) ( $foo = "somevalue"; $foo2 = "somevalue2"; $foo_bar = "somevalue3"; $foo5 = "somevalue4"; )

A takto vypadá kód, pokud zobrazíte neviditelné znaky tabulátoru a mezery:

If (condition) ( ---$foo.....= "somevalue"; ---$foo2....= "somevalue2"; ---$foo_bar.= "somevalue3"; ---$foo5 ....= "nějaká hodnota4";)

U asociativních polí musí hodnoty začínat na novém řádku. Při vypisování prvků pole se doporučuje umístit „poslední“ čárku - usnadňuje to přidávání nových prvků...

$my_array = array(---"foo"..=> "somevalue", ---"foo2"..=> "somevalue2", ---"foo3"..=> "somevalue3", -- - "foo34".=> "nějaká hodnota3",);

Styl kudrnatých rovnátek

Složené závorky musí být použity pro všechny bloky ve stylu, jak je znázorněno níže:

If (podmínka) ( akce1(); akce2(); ) elseif (podmínka2 && podmínka3) (akce3(); akce4(); ) else (výchozí akce(); )

Pokud existuje dlouhý blok, měl by být pokud možno rozdělen na dva nebo více krátkých bloků nebo funkcí. Pokud je takový dlouhý blok nezbytný, přidejte na konec krátký komentář, aby bylo jasné, co přesně složená závorka uzavírá. Tento přístup je logické použít pro blok s 35 nebo více řádky.

Jakýkoli kód, který není intuitivní, by měl být zakomentován.

Vždy používejte složená rovnátka, i když nejsou vyžadována.

If (condition) ( action0(); ) if (condition) ( action1(); ) elseif (condition2) ( action2a(); action2b(); ) foreach ($items as $item) ( process_item($item); )

Všimněte si, že požadavek na použití složených závorek vždy znamená, že konstrukce ve stylu jedné čáry jsou zakázány.

$var = "dangerous""; // nezpracovaná data, která mohou, ale nemusí být escapována $id = some_foo_number(); // data očekávaná jako číslo, ale nejsme si jisti $wpdb->query($wpdb-> připravit( "AKTUALIZOVAT $wpdb->nastavení příspěvků post_title = %s WHERE ID = %d", $var, $id));

%s se používá pro řetězce a %d pro celá čísla. Upozorňujeme, že nejsou "v uvozovkách"! $wpdb->prepare() sám escapuje řetězce a v případě potřeby přidá uvozovky. Výhodou Prepare() je, že si nemusíte pamatovat ruční použití esc_sql() a také to, že řetězec dotazu se zástupnými symboly je vizuálnější, než kdyby používal proměnné zabalené do esc_sql() .

Databázové dotazy

Snažte se nezapisovat přímé dotazy do databáze. Pokud existuje vhodná funkce, a je jich ve WP mnoho, která dokáže získat potřebná data, použijte ji.

Použití funkcí místo dotazů pomáhá udržovat budoucí kompatibilitu kódu. Mnoho funkcí navíc pracuje s mezipamětí, a to může výrazně zrychlit kód.

Jména tříd, funkcí, souborů, konstant, proměnných

Názvy funkcí, proměnných, háků

Používejte malá písmena a-z v proměnných, hácích a názvech funkcí a nikdy CamelCase . Jednotlivá slova oddělujte podtržítky _. Nezkracujte názvy proměnných, pokud to není nutné; udržovat kód jednoznačný a samodokumentující.

Funkce some_name($some_variable) ( [...])

Jména tříd

Musíte použít slova s ​​velkými_písmeny oddělenými podtržítky. Jakékoli zkratky (akronymy, zkratky) musí být VELKÉ.

Class Walker_Category rozšiřuje Walker ( [...] ) třídu WP_HTTP ( [...] )

Konstanty musí být VELKÁ PÍSMENA oddělená podtržítky:

Define("DOING_AJAX", true);

Názvy souborů

Musí být jasné a musí obsahovat pouze malá písmena a slova musí být oddělena pomlčkou - .

Můj-název-pluginu.php

Názvy souborů tříd

Mělo by být založeno na názvu třídy s předponou class- , podtržítka v názvu třídy jsou nahrazena pomlčkou, například WP_Error se stane:

Class-wp-error.php

Tento standard pojmenování souborů je platný pro všechny existující a nové soubory tříd. Existují však soubory výjimek: class.wp-dependencies.php, class.wp-scripts.php, class.wp-styles.php. Tyto soubory mají předponu class. , tečka za slovem třída místo pomlčky.

Vymazat hodnoty proměnných v parametrech funkcí

Booleovské hodnoty jsou preferovány před řetězcovými hodnotami. Tito. Místo true/false při volání funkcí je lepší použít nějaký druh řetězce vysvětlujícího hodnotu parametru.

Špatný kód:

Funkce eat($co, $pomalu = pravda) ( ​​... ) eat("houby"); jíst("houby", pravda); // co znamená pravda? eat("dogfood", false); // co znamená nepravda, opak pravdy?

Vzhledem k tomu, že PHP nepodporuje pojmenované argumenty, jsou hodnoty příznaků bezvýznamné a pokaždé, když narazíme na volání funkce, jako v příkladech výše, musíme se podívat do dokumentace funkce. Kód může být čitelnější použitím hodnot popisných řetězců namísto booleovských hodnot.

Dobrý kód:

Funkce eat($co, $speed = "pomalu") ( ... ) eat("houby"); jíst("houby", "pomalu"); eat("psí krmivo", "rychle");

Pokud potřebujete více parametrů funkcí, použijte pole $args. Je ještě lepší!

Velmi dobrý kód:

Funkce eat($co, $args) ( ... ) eat("nudle", array("rychlost" => "střední"));

Interpolace pro názvy dynamických háčků

Pro snadnější čitelnost a detekci by měly být háčky s proměnnými ve svých názvech interpolovány (uzavřeny do složených závorek ( a )) a neměly by být zřetězeny:

Závorky jsou potřeba, aby PHP mohlo správně analyzovat datové typy proměnných v interpolovaném řetězci.

// oprava do_action("($new_status)_($post->post_type)", $post->ID, $post); // nesprávná do_action($new_status "_". $post->post_type, $post->ID, $post);

Pokud je to možné, dynamické hodnoty v názvech značek by také měly být co nejkratší a nejpřesnější. $user_id je mnohem jasnější než například $this->id .

Ternární operátor

Ternární operátory jsou dobré, ale doporučují, abyste vždy testovali na pravdivé tvrzení, nikoli na nepravdivé tvrzení. Jinak je to prostě zavádějící kvůli dvojitému záporu. Výjimkou je použití! empty(), protože někdy je těžké to napsat jinak.

Jak zkontrolovat:

// (pokud je podmínka pravdivá = true) ? (pak uděláme toto): (jinak toto); $music_type = ("jazz" == $music) ? "cool" : "bla"; // (pokud hodnota není prázdná - ! prázdná) ? (pak uděláme toto): (jinak toto);

Jak nepsat:

// (pokud podmínka není splněna!= true) ? (pak uděláme toto): (jinak toto); $music_type = ("jazz" != $music) ? "bla" : "cool";

Podmínky mistra Yody

Při provádění logických porovnávání vždy umístěte konstanty nebo literály nalevo a proměnnou napravo.

If (true == $the_force) ( $victorious = you_will($be); )

Pokud ve výše uvedeném příkladu vynecháme druhý znak = (to je pravda, stává se to i těm nejzkušenějším z nás), dostaneme chybu PHP a hned ji uvidíme, protože kód nebude fungovat. Pokud by ale byla konstrukce opačná - $the_force = true , pak by byla podmínka vždy splněna a my bychom neviděli žádnou chybu a mohli bychom přehlédnout tak závažnou chybu, kterou je také někdy těžké zachytit!

Jen si musíte zvyknout na tento pravopis „vzhůru nohama“.

To platí také pro == , != , === a !== . "Yodovy podmínky" pro< , > , <= или >= mnohem obtížnější čtení a je lepší je zde nepoužívat.

Chytrý kód

Zkrátka čitelnost kódu by měla být v popředí, je důležitější než stručnost nebo nějaké ne samozřejmé, ale pohodlné zkratky.

Isset($var) || $var = nejaka_funkce(); // nebo! isset($var) && $var = some_function();

Ano, je to skvělá nahrávka, je jasné, že ji natočil zkušený programátor. Ale každý jiný vývojář a často i autor, aby porozuměl takovému záznamu, musí trochu zabrousit a strávit další sekundy nebo minuty. Toto není zřejmý nebo jasný záznam a je třeba se mu vyhnout a je lepší ho napsat déle, ale jasněji:

If (! isset($var)) ( $var = some_function(); )

Operátor potlačení chyb @

PHP podporuje jeden operátor kontroly chyb: znak @. V případě, že předchází jakýkoli výraz v kódu PHP, budou všechny chybové zprávy generované tímto výrazem ignorovány.

I když tento operátor v jádře existuje, často se používá, protože člověk je příliš líný na správné zpracování proměnné. Jeho použití je silné Nedoporučeno protože i dokumentace PHP uvádí:

Pozor: Operátor "@" dnes potlačuje výstup zpráv i o kritických chybách, které přerušují skript. Mimo jiné to znamená, že pokud jste pomocí „@“ potlačili chyby, ke kterým dochází při spouštění funkce, pokud není k dispozici nebo je zapsána špatně, další provádění skriptu bude zastaveno bez jakéhokoli upozornění.

Jednoho dne jste se rozhodli vytvořit si vlastní web nebo blog a pro systém správy jste si vybrali WordPress... Postupem času se vaše stránky stávaly stále čitelnějšími a pak jste si uvědomili, že pro ještě větší popularitu je potřeba přidat trochu funkcí na web nebo jednoduše zautomatizovat nějakou tu akci.

Přejdete do „skladu“ pluginů wordpress a zjistíte, že plugin, který potřebujete, tam není. Co dělat? Co bych měl dělat? Pokud se alespoň trochu orientujete v základech programování v PHP, layoutu, tak to pro vás nebude těžké Napište si plugin pro WordPress sami.

Nyní pojďme do „kuchyně“, kde si připravíme náš plugin.

P.s. Pokud neznáte php a layout... nebojte se, požádejte někoho, aby vám potřebné funkce napsal :)

Než začnete psát plugin, musíte si prostudovat dokumentaci WordPress, která popisuje základní principy psaní pluginů a některé příklady kódu.

Nebudu tyto informace duplikovat, ale přejdu rovnou k psaní kódu.

Pojďme napsat jednoduchý plugin, který vám umožní ukládat a zobrazovat recenze o vašem webu. Samozřejmě, že takové pluginy již existují, ale jako příklad to postačí.

První věc, kterou uděláme, je vymyslet jedinečný název pro náš plugin – “ AdvUserReviews«.

Dále vytvoříme nový adresář „advuserreviews“ v adresáři vašeho webu „/wp-content/plugins/“. A v něm vytvoříme soubor “advuserreviews.php”. Toto bude hlavní soubor, který bude zodpovědný za obecnou inicializaci. (Pro soubory je vhodné použít kódování UTF-8).

Na samém začátku souboru musíte zadat základní informace o pluginu

Nyní, když přejdete na ovládací panel, můžete vidět, že systém našel nový plugin a nabízí jeho aktivaci. Ale na to je ještě příliš brzy.

Náš nový plugin napíšeme ve stylu OOP a veškeré zpracování dat bude umístěno v jednom souboru. Vytvořme hlavní kostru souboru.

// Zastavení přímého volání if(preg_match("#" . basename(__FILE__) . "#", $_SERVER["PHP_SELF"])) ( die("Nemáte povoleno volat tuto stránku přímo."); ) pokud (!class_exists("AdvUserReviews")) ( class AdvUserReviews ( // Ukládání interních dat veřejných $data = array(); // Konstruktor objektu // Inicializace funkce hlavních proměnných AdvUserReviews() ( ) ) ) global $rprice; $cena = new AdvUserReviews();

Nyní přidejte následující kód do konstruktoru objektu:

Funkce AdvUserReviews() ( global $wpdb; // Deklarujte inicializační konstantu našeho pluginu DEFINE("AdvUserReviews", true); // Název souboru našeho pluginu $this->plugin_name = plugin_basename(__FILE__); // URL adresa pro náš plugin $ this->plugin_url = trailingslashit(WP_PLUGIN_URL."/".dirname(plugin_basename(__FILE__))); // Tabulka pro ukládání našich recenzí // proměnná $wpdb musí být deklarována globálně $this->tbl_adv_reviews = $wpdb ->prefix . "adv_reviews"; // Funkce, která se provede, když je plugin aktivován register_activation_hook($this->plugin_name, array(&$this, "activate")); // Funkce, která se provede, když je plugin deaktivován register_deactivation_hook($this->plugin_name, array (&$this, "deactivate")); // Funkce, která se provede při odinstalaci pluginu register_uninstall_hook($this->plugin_name, array(&$this, "uninstall")); )

V konstruktoru objektů používáme 3 „háky“ nebo „háky“ (co to je?): register_activation_hook, register_deactivation_hook A register_uninstall_hook- to jsou funkce, které se provádějí při aktivaci, deaktivaci a smazání pluginu.

Nyní tyto funkce přímo implementujeme.

/** * Aktivace pluginu */ function activate() ( global $wpdb; require_once(ABSPATH . "wp-admin/upgrade-functions.php"); $table = $this->tbl_adv_reviews; // Určení verze mysql if ( version_compare(mysql_get_server_info(), "4.1.0", ">=")) ( if (! empty($wpdb->charset)) $charset_collate = "VÝCHOZÍ SADA ZNAKŮ $wpdb->charset"; if (! empty( $wpdb->collate)) $charset_collate .= "COLLATE $wpdb->collate"; ) // Struktura naší tabulky pro recenze $sql_table_adv_reviews = "CREATE TABLE `.$wpdb->prefix."adv_reviews` (`ID` INT(10) UNSIGNED NULL AUTO_INCREMENT, `review_title` VARCHAR(255) NOT NULL DEFAULT "0", `review_text` TEXT NOT NULL, `review_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP_NULL`review_user_user , `review_user_email` VARCHAR(200) NULL, PRIMÁRNÍ KLÍČ (`ID`))".$charset_collate.";"; // Zkontrolujte existenci tabulky, pokud ($wpdb->get_var("zobrazit tabulky jako "".$table .""" ) != $table) ( dbDelta($sql_table_adv_reviews); ) ) /** * Deaktivace pluginu */ funkce deactivate() ( return true; ) /** * Odebrání pluginu */ function uninstall() ( global $wpdb; $wpdb->query("DROP TABLE IF EXISTS ($wpdb->prefix)adv_reviews"); )

Variabilní $wpdb Zodpovědnost za dotazy do databáze. Funkce dbDelta analyzuje aktuální strukturu tabulky, porovná ji s požadovanou strukturou tabulky a podle potřeby tabulku buď přidá nebo upraví.

V souladu s tím se při aktivaci pluginu vytvoří struktura tabulky pro ukládání recenzí. Když je plugin deaktivován, neproběhne žádná akce, ale když je smazán, smažeme naši tabulku. Akce lze podrobněji pochopit ze zdrojového kódu.

Základní struktura nového pluginu je připravena. Nyní musíme začít psát funkční část. Abychom to mohli udělat, musíme do konstruktoru třídy přidat následující řádky kódu:

// Pokud jsme v admin. interface if (is_admin()) ( // Přidání stylů a skriptů add_action("wp_print_scripts", array(&$this, "admin_load_scripts")); add_action("wp_print_styles", array(&$this, "admin_load_styles")); // Přidat nabídku pro plugin add_action("admin_menu", array(&$this, "admin_generate_menu")); ) else ( // Přidat styly a skripty add_action("wp_print_scripts", array(&$this, "site_load_scripts" )) ; add_action("wp_print_styles", array(&$this, "site_load_styles")); add_shortcode("show_reviews", array (&$this, "site_show_reviews")); )

Podívejme se na tuto část kódu podrobněji. Začněme administračním panelem.
Funkce " is_admin» zkontroluje, v jakém režimu aktuálně pracujeme - na webu nebo v ovládacím panelu.
Dále se pro funkce používá několik háčků:

  • wp_print_scripts- Přidejte potřebné soubory javascriptu
  • wp_print_styles- Přidejte potřebné styly
  • admin_menu- Přidání nové nabídky na ovládací panel

Každý háček odpovídá metodě implementované v naší třídě. Ve kterém se provádějí potřebné operace.
Podívejme se na kód pro propojení stylů a skriptů

/** * Načtení potřebných skriptů pro stránku správy * v administračním panelu */ funkce admin_load_scripts() ( // Registrace skriptů wp_register_script("advReviewsAdminJs", $this->plugin_url . "js/admin-scripts.js") ; wp_register_script( "jquery", $this->plugin_url . "js/jquery-1.4.2.min.js"); // Přidání skriptů na stránku wp_enqueue_script("advReviewsAdminJs"); wp_enqueue_script("jquery"); ) /** * Načtení potřebných stylů pro ovládací stránku * v administračním panelu */ funkce admin_load_styles() ( // Registrace stylů wp_register_style("advReviewsAdminCss", $this->plugin_url . "css/admin-style.css") ; // Přidat styly wp_enqueue_style( "advReviewsAdminCss"); )

Zde se používají následující funkce.

Každá akce závisí na předaném parametru „action“, respektive „edit“ – úprava recenze, „submit“ – uložení upravené recenze a „delete“ – smazání recenze.

Výměna dat se zobrazovanými stránkami probíhá prostřednictvím vlastnosti objektu „data“. Zdrojový kód těchto stránek bude zveřejněn v archivu s tímto modulem na konci článku. Nebudu je sem vkládat, protože téma je již poměrně rozsáhlé.

Zde končíme s administračním panelem a přecházíme k zobrazování a přidávání recenzí od uživatelů.

Abychom WordPressu řekli, kdy zavolat náš plugin, musíme zaregistrovat „shortcode“, což je to, co bylo provedeno v konstruktoru naší třídy. Přečtěte si o tom více.

Add_shortcode("show_reviews", pole (&$this, "site_show_reviews"));

Nyní můžete umístit následující kód na libovolnou stránku webu a vynutí provedení námi zadané funkce (předané jako druhý parametr). Níže je uveden zdrojový kód této funkce.

/** * Seznam recenzí na webu */ veřejná funkce site_show_reviews($atts, $content=null) (globálně $wpdb; if (isset($_POST["akce"]) && $_POST["akce"] = = " add-review") ( $this->add_user_review(); ) // Vybrat všechny recenze z databáze $this->data["reviews"] = $wpdb->get_results("SELECT * FROM `" . $ this- >tbl_adv_reviews . "`", ARRAY_A); ## Povolit ukládání do vyrovnávací paměti výstupu ob_start (); include_once("site_reviews.php"); ## Přijímat data $output = ob_get_contents (); ## Zakázat ukládání do vyrovnávací paměti ob_end_clean (); return $output ; ) soukromá funkce add_user_review() ( globální $wpdb; $inputData = array("review_title" => strip_tags($_POST["review_title"]), "review_text" => strip_tags($_POST["review_text"]) , " review_user_name" => strip_tags($_POST["review_user_name"]), "review_user_email" => strip_tags($_POST["review_user_email"]),); // Přidat novou recenzi na web $wpdb->insert( $this-> tbl_adv_reviews, $inputData); )

V zásadě zde není nic složitého - pro výběr dat se provádí dotaz SQL, ale pokud je předán parametr „action“, je nejprve přidána nová recenze. Ale stojí za to věnovat pozornost ukládání do vyrovnávací paměti výstupu. Je to nutné pro získání dat vložené stránky.

To je vše. Nyní můžeme vidět, co jsme dostali. A stáhnout plugin a zdrojové kódy můžete tady.

Toto je samozřejmě jen příklad vytvoření pluginu, ale bude fungovat i jako jednoduchá hostující aplikace, pokud ji trochu upravíte, například přidáte ochranu před roboty a stránku po stránce. Veselé kódování :)

Formulář na webu:

Ovládací panel pluginu:

Úprava recenze:

Mohlo by vás také zajímat:


Všechny začínající webmastery práce s kódem děsí a odrazuje – bojí se, že svému webu uškodí tím, že na něj přidají HTML nebo PHP, nebo ho vloží na špatné místo. Samozřejmě, pokud dáte kód na nesprávné místo ve WordPressu, můžete vše zničit. Tento CMS je však tak dobře přizpůsoben pro začátečníky, že bude těžké udělat chybu.

V tomto článku se podíváme na to, jak bezpečně vložit HTML nebo PHP kód do WordPressu. Ale nejprve, proč by to mohlo být užitečné.

Proč vkládat kód do WordPressu

Během životnosti webu může webmaster potřebovat nainstalovat kód na WordPress, který musí být na stránkách spuštěn. To může být potřeba z různých důvodů: například instalace počítadla provozu, neobvyklého widgetu nebo přidání osobitosti do šablony.

WordPress nabízí dva způsoby instalace kódu. Pojďme se na ně podívat.

Instalace pomocí widgetu Text

Chcete-li nainstalovat kód na WordPress pomocí widgetu, musíte přejít na položku nabídky v konzole „Vzhled“ a podpoložku „Widgety“. Mezi nimi byste měli najít „Text“ a přesunout jej myší do požadované oblasti.

Widget se otevře a vy můžete vyplnit jeho název a také vložit požadovaný kód do příslušného pole. Po kliknutí na tlačítko „Uložit“ bude operace provedena na stránkách webu.

Tento způsob instalace kódu na WordPress je vhodný pro provádění operací v HTML, PHP a dokonce i JavaScriptu. Tato metoda se často používá, protože je snadná a funguje dobře pro začátečníky.

Instalace do souboru

Instalace kódu na WordPress pomocí úpravy souborů se začátečníkům nedoporučuje, ale dříve nebo později to bude muset zvládnout každý. Tato metoda je vhodná, protože HTML nebo PHP lze umístit do libovolné části, nejen do oblasti widgetů, jak je popsáno v první metodě. Nevýhodou tohoto způsobu instalace je, že může být nebezpečný a v případě chyb může vést k nefunkčnosti webu. Proto před použitím této metody musíte vytvořit záložní kopii souborů a databáze.

Chcete-li nainstalovat kód přímo do souboru na WordPress, musíte vědět, za kterou oblast webu je konkrétní soubor zodpovědný. Zde není možné poskytnout přesná doporučení, protože v různých šablonách různé soubory vykonávají určité funkce. Můžete se však dozvědět něco o souborech motivů. Kromě instalace kódu do souboru šablony na WordPress to lze provést také v souborech samotného CMS.

Čitelnost kódu je velmi citlivé téma a je třeba mu věnovat náležitou pozornost. V tomto článku se dozvíte 16 technik, které vám pomohou pokročit v tomto tématu.

1. Komentáře a dokumentace

IDE jsou ve světě vývojářů stále populárnější, protože... poskytují pohodlné nástroje pro komentování a dokumentaci kódu.

Zde je příklad:

Zde je další příklad volání vlastní metody:

V tomto příkladu je styl komentářů založen na PHPDoc a IDE, které používám, je Aptana.

2. Odrážky

Předpokládám, že již znáte důležitost odsazení ve vašem kódu. Obecně existuje několik stylů formátování kódu.

Funkce foo() ( if ($možná) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Funkce foo() ( if ($možná) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Funkce foo() ( if ($možná) ( do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Osobně nejčastěji používám styl #2, ale občas přejdu na #1. Ale to vše je samozřejmě věcí vkusu. S největší pravděpodobností neexistuje žádný „nejlepší“ styl, který by vyhovoval úplně všem. Tato pravidla musí především dodržovat ti, kteří pracují v týmu nebo se podílejí na psaní open-source projektů.

Existují také styly, které kombinují určité vlastnosti. Například standardy psaní kódu PEAR, kde složená závorka "(" v podmíněných příkazech zůstává na stejném řádku, ale ve funkcích je přesunuta.

Styl HRUŠKA:

Funkce foo() ( // na novém řádku if ($možná) ( // na stejném řádku do_it_now(); again(); ) else ( abort_mission(); ) finalize(); )

Je třeba také poznamenat, že tento styl používá 4 mezery místo tabulátorů.

Můžete se dozvědět více o různých stylech.

3. Vyvarujte se zbytečných komentářů

Ano, komentovací kód je dobrý; není však třeba to přehánět. Zde je příklad:

// získání kódu země $country_code = get_country_code($_SERVER["REMOTE_ADDR"]); // pokud je země USA if ($country_code == "US") ( // zobrazí formulář echo form_input_state(); )

Pokud je práce kódu zřejmá, pak byste s největší pravděpodobností neměli psát zbytečné komentáře.

Pokud je nemáte, můžete je trochu zkrátit:

// zobrazí formulář, pokud je země US $country_code = get_country_code($_SERVER["REMOTE_ADDR"]); if ($country_code == "US") ( echo form_input_state(); )

4. Seskupování kódů

Některé úlohy nejčastěji vyžadují napsání několika řádků kódu. Proto je nejlepší takové úlohy kombinovat do samostatných bloků oddělených mezerami.

Zde je jednoduchý příklad:

// získat seznam fór $forums = array(); $r = mysql_query("VYBRAT id, jméno, popis FROM fór"); while ($d = mysql_fetch_assoc($r)) ( $forums = $d; ) // načtení šablony load_template("header"); load_template("seznam_forem",$forum); load_template("patička");

Pokud přidáte komentář před začátkem každého bloku, dále to zlepší čitelnost vašeho kódu.

5. Schéma pojmenování

Občas i v jazyce PHP najdete nesrovnalosti v pojmenovávání funkcí. A zde je mnoho příkladů:

  • strpos() vs str_split()
  • imagetypes() vs image_type_to_extension()

Existuje několik populárních stylů:

  • camelCase: velké první písmeno každého nového slova.
  • podtržítka: podtržítko mezi slovy: mysql_real_escape_string().

Pokud tyto techniky zkombinujete, dříve nebo později se můžete dostat do nepříjemné situace. Pokud pracujete na projektu, který používá jednu z těchto technik, budete chtít následovat. To může stále záviset na programovacím jazyce. Například většina vývojářů Java používá camelCase, zatímco vývojáři PHP preferují podtržítka.

Ale i tady byl hybrid. Někteří vývojáři používají podtržítka při pojmenovávání tříd a metod (mimo třídy) a v jiných případech používají camelCase:

Třída Foo_Bar ( veřejná funkce someDummyMethod() ( ) ) funkce procedurální_název_funkce() ( )

Ještě jednou řeknu, že neexistuje nejlepší styl. Jen se musíte něčeho držet.

6. Princip DRY

DRY (Don’t Repeat Yourself) – neopakujte se. Také známý jako DIE: Duplication is Evil.

Hlavním úkolem každého systému, ať už je to webová aplikace nebo něco jiného, ​​je automatizace opakujících se úloh. Tato zásada by se měla dodržovat vždy a všude, zvláště pokud jste vývojář. Stejný kus kódu by se neměl opakovat znovu a znovu.

Většina webových aplikací se například skládá z jedné nebo více stránek. Je jasné, že tyto stránky budou obsahovat stejné prvky. Nejvýraznějším příkladem je záhlaví a zápatí. Byli byste překvapeni, kolik lidí stále tyto prvky na každé stránce duplikuje.

$this->load->view("zahrnuje/záhlaví"); $this->load->view($main_content); $this->load->view("zahrnuje/patička");

7. Vyhněte se hlubokému hnízdění

Čitelnost kódu prudce klesá, pokud máte hluboké vnoření.

Funkce do_stuff() ( // ... if (is_writable($folder)) ( if ($fp = fopen($file_path,"w")) ( if ($stuff = get_some_stuff()) ( if (fwrite($ fp,$stuff)) ( // ... ) else ( return false; ) ) else ( return false; ) ) else ( return false; ) ) else ( return false; ) )

Chcete-li situaci napravit, měli byste znovu zvážit, jak váš kód funguje, a optimalizovat jej:

Funkce do_stuff() ( // ... if (!is_writable($folder)) ( return false; ) if (!$fp = fopen($file_path,"w")) ( return false; ) if (!$stuff = get_some_stuff()) ( return false; ) if (fwrite($fp,$stuff)) ( // ... ) else ( return false; ) )

8. Limit délky vedení

Každý ví, že proces čtení se stává mnohem zábavnějším, když je text rozdělen do sloupců. To je hlavní důvod, proč naše noviny vypadají takto:

Podobnou techniku ​​lze použít na náš kód:

// špatný $my_email->set_from(" [e-mail chráněný]")->add_to(" [e-mail chráněný]")->set_subject("Methods Chained")->set_body("Nějaká dlouhá zpráva")->send(); // dobrý $my_email ->set_from(" [e-mail chráněný]") ->add_to(" [e-mail chráněný]") ->set_subject("Methods Chained") ->set_body("Nějaká dlouhá zpráva") ->send(); // špatný $query = "SELECT id, username, first_name, last_name, status FROM users LEFT JOIN user_posts USING (users.id, user_posts.user_id) WHERE post_id = "123""; // špatný $query = "SELECT id, username, first_name, last_name, status FROM users LEFT JOIN user_posts USING(users.id, user_posts.user_id) WHERE post_id = "123"";

Většina vývojářů se drží limitů 80 a 120 znaků.

9. Organizace souborů a složek

Technicky můžete celý kód vaší aplikace vložit do jednoho souboru :) Ale co budete dělat, když budete potřebovat něco změnit nebo přidat.

Pamatuji si své první projekty, ve kterých jsem přikládal soubory. Moje organizace však byla velmi špatná. Vytvořil jsem složku „inc“, do které jsem umístil několik souborů: db.php a functions.php. Během procesu psaní aplikace se tato složka zvětšovala a zvětšovala a nakonec bylo obtížné zjistit, co kde je.

K vyřešení tohoto problému je lepší používat různé druhy rámců nebo alespoň dodržovat jejich strukturu. Takto vypadá projekt na CodeIgniter:

10. Názvy proměnných

Obecně platí, že názvy proměnných by měly být zcela smysluplné – to je ideální. Pro dočasné proměnné lze udělat výjimku.

Podívejme se na několik příkladů:

// $i pro cykly for ($i = 0; $i< 100; $i++) { // $j для вложенных циклов for ($j = 0; $j < 100; $j++) { } } // $ret для возвращаемых переменных function foo() { $ret["bar"] = get_bar(); $ret["stuff"] = get_stuff(); return $ret; } // $k и $v для foreach foreach ($some_array as $k =>$v) ( ) // $q, $r a $d pro mysql $q = "VYBRAT * Z tabulky"; $r = mysql_query($q); while ($d = mysql_fetch_assocr($r)) ( ) // $fp pro práci se soubory $fp = fopen("file.txt","w");

11 - Klíčová slova v SQL pište velkými písmeny

Většina webových aplikací spolupracuje s databázemi. Pokud si píšete SQL dotazy sami, pak je také potřeba je odpovídajícím způsobem naformátovat... Zde není nic složitého. Stačí napsat klíčová slova velkými písmeny.

12. Oddělte kód a data

To je další princip, který vám pomůže psát srozumitelnější programy. Zahrnuje přípravu dat na jednom místě (například modely) a interakci s nimi na jiném.

Když se PHP začalo vyvíjet, bylo to spíše jako šablonovací systém. Projekty v tomto jazyce obsahovaly smíšený kód HTML a PHP. Nyní se vše změnilo a každý by měl přejít na další úroveň psaní aplikací.

Můžete si vyvinout speciální styl pro sebe, nebo můžete použít dnes nejoblíbenější prostředky.

Populární PHP frameworky:

Šablonové systémy:

Populární CMS

13. Speciální syntaxe pro šablony

Pokud nechcete používat šablonový systém, pak si nejspíše budete muset vyvinout vlastní styl vkládání PHP kódu do HTML.

A zde je příklad:

Ahoj, uživatelské jméno; ?>
|

Moje nástěnka

titul; ?>

Fóra jako $forum): ?>

id, $forum->title) ?> (Vlákna->pocet(); ?> vlákna)

popis; ?>

Tato technika vám umožní vyhnout se zbytečným závorkám. Takový kód také dobře zapadá do kontextu HTML.

14. Procedurální a objektově orientované přístupy

Objektově orientované programování vám pomůže držet se víceméně jasné struktury, ale to neznamená, že byste se měli odchýlit od procedurálních principů psaní aplikací.

Objekty jsou skvělé pro reprezentaci dat. Příklad:

Class User ( public $username; public $first_name; public $last_name; public $email; public function __construct() ( // ... ) public function create() ( // ... ) public function save() ( / / ... ) public function delete() ( // ... ) )

Procedurální metody mají své specifické výhody.

Funkce capitalize($string) ( $ret = strtoupper($string); $ret .= strtolower(substr($string,1)); return $ret; )

15. Přečtěte si otevřený zdrojový kód

Projekty Open Source obvykle píše velké množství vývojářů. Z tohoto pohledu vám může studium napsaného kódu v podobných projektech pomoci získat zkušenosti. Tak s tím neztrácejte čas.

16. Refaktoring

Refaktoring je změna kódu bez ztráty funkčnosti. Může být také použit pro zlepšení čitelnosti.Není zde prostor pro opravy chyb nebo přidávání funkcí. Stačí trochu změnit strukturu kódu.

Doufám, že vám tento článek pomohl! Uniká mi něco? Podělte se o své zkušenosti!

Troufám si předpokládat, že ve vašem životě byly chvíle, kdy jste chtěli něco přidat (opravit) k tématu vašich WP stránek, nebo k funkčnosti nějakého pluginu. Vývojáři navíc tuto funkci nezahrnuli do standardních ovládacích prvků. A vaše duše neuznává žádná omezení a vyžaduje úlety fantazie :) Jak chápete, z každé situace existuje cesta ven, v tomto případě budeme muset opravit kód pluginu, motivu...

Hlavním problémem při úpravě kódu je, že provedené změny se bohužel neukládají dlouho a s největší pravděpodobností budou během příští aktualizace zrušeny. Pokud řešení, které vidíte, je vyhýbat se aktualizacím, dovoluji si vás od tohoto nebezpečného hanebného rozhodnutí odradit, protože aktualizace obsahují důležité změny z hlediska zabezpečení a opravy chyb a často také přidávají nové funkce.

V důsledku toho je vhodnější používat metody, které obstojí v našem dynamicky se měnícím světě a zároveň ušetří váš drahocenný čas.

Upozornění!

Na internetu můžete často najít rady, které doporučují provést změny v souboru funkce.php- pokud existuje nějaká příležitost se bez toho obejít, je lepší se tohoto souboru nedotýkat. V níže uvedených metodách uvidíte způsob, jak to implementovat. A v každém případě je potřeba vytvořit podřízené téma a nedotýkat se toho nadřazeného.

Při přidávání předpon k funkci vždy použijte vlastní kód ve tvaru: _předpona(na název funkce, která se mění). Tato akce vás ochrání před konflikty s jinými funkcemi motivu nebo pluginu.

Jak tedy přidáte kód na web WP?

1) Vlastní plugin

Tímto způsobem můžete vkládat úryvky kódu, které se během aktualizace nesmažou, a můžete je také upravovat, v budoucnu aktivovat nebo naopak - deaktivovat podle potřeby.

To je snadné: nejprve musíte vytvořit adresář pro váš plugin a podle toho jej pojmenovat, například moy-plugin (používejte pouze pomlčky, nikoli podlomítka)

Dále vytvoříme hlavní soubor pluginu. Jak jste pochopili, měl by obsahovat název, popis a základní informace a také kód, který pomůže zabezpečit plugin před vetřelci. A tento soubor nazýváme, řekněme moy-plugin.php. Přípona .php sdělí WP, v jakém jazyce byl soubor vytvořen.

Soubor můžete vytvořit výše popsaným způsobem v libovolném textovém editoru, například NotePad, který je již pečlivě nainstalován v operačním systému Windows (TextEdit na Macu). Je lepší nepoužívat editor Microsoft Word, protože formátuje text a v této situaci ho absolutně nepotřebujeme.

Zde je tedy kód k přidání:

A pod tímto kódem proveďte změny, jak to vaše kreativní duše vyžaduje. Na konec není potřeba přidávat uzavírací PHP tagy. V tomto případě se název, popis a adresa URL zobrazí na vašem administrátorském panelu. A samozřejmě můžete nahradit informace „ClubWP“ svými vlastními informacemi

Poté už zbývá jen zabalit to, co jste vytvořili, do archivu zip a odeslat na ftp vašeho webu. V budoucnu tímto způsobem můžete provádět jakékoli změny vašeho pluginu.

Tímto snadným způsobem si vytvoříte jednoduchý plugin pro vaše potřeby.

2) Plugin Code Snippets

Pokud je pro vás výše popsaná metoda obtížná nebo jste velmi praktický člověk a jste zvyklí na rychlejší výsledky, byly úryvky kódu vytvořeny speciálně pro vás. Stejně jako výše popsaná funkce, plugin přidá váš kód s možností jeho další úpravy bez použití vašeho motivu.

Po instalaci pluginu se na administrátorském panelu objeví nové okno „Snippets“, do kterého můžete přidávat nové úryvky. Ke kterému můžete zadat kód a informace o jeho účelu.

Máte tedy možnost povolit nebo zakázat vlastní kód ve formě pluginů. Velmi pohodlné a praktické, protože... Někdy může docházet ke konfliktům s motivy a pluginy a vy to snadno pochopíte a vygenerovaný kód deaktivujete.

3) Editace Functions.php podřízeného motivu

Pokud pro vás použití pluginů není vhodné a potřebujete provést změny přímo v tématu vašeho webu, pak je tato metoda pro vás. Dovolte mi, abych vám připomněl, že to můžete provést pouze s dětskými motivy.

K použití této metody nabízím svou šablonu funkce.php dětské téma. Rozbalte a upravte soubor styl.css(název šablony a adresa URL importu)

P.S. Pokuste se udělat vše pro to, abyste si v budoucnu zjednodušili život, včetně tvrdého podílu na odstraňování chyb a upravování vlastního kódu podle potřeby.