wp-də kod yazma nümunələri. WordPress üçün plagini necə yazmaq olar. WordPress mühərrikinin əsas xüsusiyyətləri

WordPress ən populyar CMS-lərdən biridir. WordPress əvvəlcə bloqçuluq mühərriki kimi yaradılmışdı, lakin bu məzmun idarəetmə sisteminin populyarlığına görə müxtəlif növ vebsaytlar yaratmağa imkan verən bir çox əlavələr və plaginlər hazırlanmışdır. Əlbəttə ki, digər WP mühərriklərində olduğu kimi, bir webmasterin bilməli olduğu bir çox fərqli tələlər var.

WordPress mühərrikinin əsas xüsusiyyətləri

WordPress sənədlərində bir neçə yüz PHP funksiyası var, lakin onların əksəriyyəti xüsusi problemlərin həlli zamanı çox nadir hallarda istifadə olunur. Mövzular və vidjetlər hazırlayarkən ən çox istifadə olunan az sayda WordPress funksiyasını seçdim...

WordPress-də H1 Başlığı

Bu yazıda biz WordPress-də birinci səviyyəli H1 başlıqlarının təkrarlanmasının qarşısını necə alacağımıza baxacağıq. Məlum bir qayda var ki, hər səhifədə yalnız bir birinci səviyyəli H1 başlığı olmalıdır, lakin əksər WordPress mövzuları elə tərtib edilmişdir ki, H1...

WordPress vidjetlərinin yaradılması

Bu məqalə öz WordPress vidjetlərinizin yaradılması haqqında danışacaq. Gəlin nəzərdən keçirək: WordPress vidcetini birbaşa mövzuda yaratmaq, widgetı göstərəcək öz plagininizi yaratmaq, standart WordPress vidcetlərini söndürmək...

WordPress-də başınızı lazımsız koddan necə təmizləmək olar?

Varsayılan olaraq, WordPress başda kodu göstərir, əksər hallarda bu tamamilə lazımsızdır. Bu qısa məqalədə vebsaytdakı lazımsız zibil kodundan necə qurtulacağımıza baxacağıq. İlk növbədə, bütün lazımsız bağlantıları siləcəyik: RSS lentləri, WordPress versiyası...

WordPress-də skript və üslubların münaqişəsiz əlaqəsi

Münaqişəsiz metod bir neçə səbəbə görə lazımdır: bir skripti müxtəlif plaginlərlə birləşdirərkən münaqişənin qarşısını alır. Bu əlaqə ilə üsul bir neçə js faylını birləşdirməyə və optimallaşdırma üçün onu sıxılmış formada brauzerə göndərməyə imkan verir...

Bütün təcrübəsiz vebmasterlər kodla işləməkdən qorxurlar və onları təxirə salırlar - onlar HTML və ya PHP əlavə etməklə və ya yanlış yerə daxil etməklə saytlarına zərər verməkdən qorxurlar. Əlbəttə ki, kodu WordPress-də səhv yerə qoysanız, hər şeyi məhv edə bilərsiniz. Bununla belə, bu CMS yeni başlayanlar üçün o qədər yaxşı hazırlanmışdır ki, səhv etmək çətin olacaq.

Bu yazıda biz HTML və ya PHP kodunu WordPress-ə təhlükəsiz şəkildə necə daxil edəcəyimizə baxacağıq. Ancaq əvvəlcə bunun nə üçün faydalı ola biləcəyi.

Niyə kodu WordPress-ə yerləşdirin

Saytın işlədiyi müddətdə veb ustası WordPress-də səhifələrdə yerinə yetirilməli olan kodu quraşdırmalı ola bilər. Bu, müxtəlif səbəblərə görə lazım ola bilər: məsələn, trafik sayğacının quraşdırılması, bəzi qeyri-adi vidcet və ya şablona şəxsiyyət əlavə etmək.

WordPress kodu quraşdırmağın iki yolunu təklif edir. Gəlin onlara baxaq.

"Mətn" vidjetindən istifadə edərək quraşdırma

Bir widget istifadə edərək kodu WordPress-də quraşdırmaq üçün "Görünüş" konsolunda menyu elementinə və "Vidjetlər" alt elementinə keçməlisiniz. Onların arasında "Mətn" tapmalı və siçan ilə istədiyiniz sahəyə köçürməlisiniz.

Vidcet açılacaq və siz onun başlığını doldura, həmçinin tələb olunan kodu müvafiq sahəyə yerləşdirə bilərsiniz. “Saxla” düyməsini sıxdıqdan sonra əməliyyat sayt səhifələrində həyata keçiriləcək.

WordPress-də kodun quraşdırılmasının bu üsulu HTML, PHP və hətta JavaScript-də əməliyyatları yerinə yetirmək üçün uyğundur. Bu üsul tez-tez istifadə olunur, çünki asan və yeni başlayanlar üçün yaxşı işləyir.

Fayla quraşdırma

Fayl redaktəsindən istifadə edərək WordPress-də kodu quraşdırmaq yeni başlayanlar üçün tövsiyə edilmir, lakin gec-tez hər kəs onu mənimsəməli olacaq. Bu üsul rahatdır, çünki HTML və ya PHP birinci üsulda təsvir olunduğu kimi yalnız widget sahəsinə deyil, istənilən hissəyə yerləşdirilə bilər. Bu quraşdırma metodunun dezavantajı odur ki, təhlükəli ola bilər və səhvlər olarsa, saytın işləməməsinə səbəb ola bilər. Buna görə də, bu üsuldan istifadə etməzdən əvvəl fayllarınızın və verilənlər bazanızın ehtiyat nüsxəsini çıxarmalısınız.

Kodu birbaşa WordPress-də bir fayla quraşdırmaq üçün müəyyən bir faylın saytın hansı sahəsinə cavabdeh olduğunu bilməlisiniz. Burada dəqiq tövsiyələr vermək mümkün deyil, çünki müxtəlif şablonlarda müxtəlif fayllar müəyyən funksiyaları yerinə yetirir. Bununla belə, mövzu faylları haqqında bir şey öyrənə bilərsiniz. Kodu WordPress-də şablon faylına quraşdırmaqdan əlavə, bu, CMS-in fayllarında da edilə bilər.

WordPress kodunun hər yerdə eyni üslubda tərtib edilməsini və əsas, plaginlər və mövzularda oxunması asan olmasını təmin etmək üçün WordPress tərtibatçıları tərəfindən qəbul edilmiş kodlaşdırma standartlarına riayət etmək tövsiyə olunur. Bu standartlar PEAR standartına çox bənzəyir, lakin əhəmiyyətli fərqlər var. Onlarla tanış olmağı və mümkünsə, plaginlər və ya mövzular yaradarkən onlara əməl etməyi tövsiyə edirəm.

PHP kodunun özünün yazılması standartlarına əlavə olaraq, kodun sənədləşdirilməsi üçün standartlar da mövcuddur - bunlar funksiyalar və qarmaqlar haqqında şərhlərdir: PHP Documentation Standards (İngilis dili)

Tək və ikiqat dırnaqlar

Sətirdə dəyişənlər yoxdursa, tək dırnaq işarələrindən, əks halda isə cüt dırnaq işarələrindən istifadə edin. Sətirdə sitatlardan qaçmağa ehtiyac yoxdur və əgər onlar varsa, onları alternativ etmək tövsiyə olunur:

Echo "Bağlantı adı"; echo "$linkname";

Bu misaldakı ikinci sətir çıxış dəyişənlərini təmizləmir, bu təhlükəsizlik səbəbi ilə edilməlidir. Buna görə də, belə bir yazı üçün dəyişənlər əvvəlcədən təmizlənməlidir. Ümumiyyətlə, belə səsyazma yolverilməz sayıla bilər! Təhlükəsiz çıxış haqqında təlimat bölməsinə baxın.

girintilər

Abzas həmişə kodun məntiqi strukturunu göstərməlidir. Boşluqlar əvəzinə nişanlardan (Tab düyməsi) istifadə edin - bu, daha çox çeviklik verir. Xətt daxilində bir şeyi hizalamaq lazım olduqda boşluqlardan istifadə edilməlidir.

Qayda: nişanlar girinti üçün xəttin əvvəlində istifadə edilməlidir, boşluqlar isə hizalama üçün xəttin ortasında istifadə edilə bilər.

Əgər (şərt) ( $foo = "müəyyən dəyər"; $foo2 = "müəyyən dəyər2"; $foo_bar = "bir qədərdəyər3"; $foo5 = "müəyyən dəyər4"; )

Görünməz nişan və boşluq simvollarını göstərsəniz, kod belə görünür:

Əgər (şərt) ( ---$foo.....= "müəyyən dəyər"; ---$foo2....= "bir az dəyər2"; ---$foo_bar.= "bəzi dəyər3"; ---$foo5 ....= "müəyyən dəyər4";

Assosiativ massivlər üçün dəyərlər yeni sətirdən başlamalıdır. Massiv elementlərini sadalayarkən “sonuncu” vergülün qoyulması tövsiyə olunur – bu, yeni elementlərin əlavə edilməsini daha rahat edir...

$my_array = massiv(---"foo"..=> "bir qədər dəyər", ---"foo2"..=> "bir qədər dəyər2", ---"foo3"..=> "bir qədər dəyər3", -- - "foo34".=> "bir qədər dəyər3",);

Buruq brace stili

Aşağıda göstərildiyi kimi üslubun bütün blokları üçün buruq mötərizələrdən istifadə edilməlidir:

Əgər (şərt) ( action1(); action2(); ) elseif (şərt2 && şərt3) ( action3(); action4(); ) else ( defaultaction(); )

Uzun blok varsa, o, mümkünsə, iki və ya daha çox qısa bloka və ya funksiyaya bölünməlidir. Əgər belə uzun blok lazımdırsa, qıvrım mötərizənin tam olaraq nə bağlandığını aydınlaşdırmaq üçün sonunda qısa bir şərh əlavə edin. Bu yanaşma 35 və ya daha çox sətirdən ibarət blok üçün istifadə etmək məntiqlidir.

İntuitiv olmayan hər hansı kod şərh edilməlidir.

Həmişə buruq mötərizələrdən istifadə edin, hətta tələb olunmasa da.

Əgər (şərt) ( action0(); ) if (şərt) ( action1(); ) elseif (şərt2) ( action2a(); action2b(); ) foreach ($items as $element) ( process_item($item); )

Qeyd edək ki, qıvrımlı mötərizələrdən istifadə tələbi həmişə tək sətir tipli konstruksiyaların qadağan edildiyini bildirir.

$var = "təhlükəli""; // qaçırıla bilən və ya olmaya bilməyən xam data $id = some_foo_number(); // rəqəm kimi gözlənilən data, lakin biz əmin deyilik $wpdb->query($wpdb-> hazırlamaq ("YENİLƏNİB $wpdb->posts SET post_title = %s WHERE ID = %d", $var, $id));

%s sətirlər üçün, %d isə tam ədədlər üçün istifadə olunur. Nəzərə alın ki, onlar "dırnaq içində" deyillər! $wpdb->prepare() özü sətirlərdən qaçır və lazım olduqda sitat əlavə edir. Hazırlamaq() funksiyasının üstünlüyü ondan ibarətdir ki, siz esc_sql() funksiyasından əl ilə istifadə etməyi yadda saxlamaq lazım deyil, həmçinin yer tutucuları olan sorğu sətri esc_sql() -ə bükülmüş dəyişənlərdən istifadə etməklə müqayisədə daha vizualdır.

Verilənlər bazası sorğuları

Verilənlər bazasına birbaşa sorğular yazmamağa çalışın. Əgər uyğun funksiya varsa və WP-də lazımi məlumatları əldə edə biləcək bir çox funksiya varsa, ondan istifadə edin.

Sorğular əvəzinə funksiyalardan istifadə gələcək kod uyğunluğunu qorumağa kömək edir. Bundan əlavə, bir çox funksiya önbellek ilə işləyir və bu kodu əhəmiyyətli dərəcədə sürətləndirə bilər.

Siniflərin, funksiyaların, faylların, sabitlərin, dəyişənlərin adları

Funksiyaların, dəyişənlərin, qarmaqların adları

Dəyişənlərdə, qarmaqlarda və funksiya adlarında a-z kiçik hərflərindən istifadə edin və heç vaxt CamelCase istifadə etməyin. Ayrı-ayrı sözləri alt xətt ilə ayırın _. Lazım olmadıqca dəyişən adlarını qısaltmayın; kodu birmənalı və özünü sənədləşdirən saxlayın.

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

Sinif adları

Siz alt xətt ilə ayrılmış Böyük_Hərflərlə sözlərdən istifadə etməlisiniz. İstənilən abbreviatura (qısaltmalar, abbreviaturalar) BAŞAHILI olmalıdır.

Class Walker_Category Walker ( [...] ) sinif WP_HTTP ( [...] ) genişləndirir

Sabitlər alt xətt ilə ayrılmış BÖYÜK sözlərdən ibarət olmalıdır:

Müəyyən et("DOING_AJAX", doğru);

Fayl adları

Aydın olmalıdır və yalnız kiçik hərflərdən ibarət olmalıdır və sözlər tire ilə ayrılmalıdır - .

My-plugin-name.php

Sinif fayl adları

class- prefiksi olan sinif adına əsaslanmalıdır, sinif adındakı alt xətt tire ilə əvəz olunur, məsələn, WP_Error olur:

Class-wp-error.php

Bu fayl adlandırma standartı bütün mövcud və yeni sinif faylları üçün etibarlıdır. Bununla belə, istisna faylları var: class.wp-dependencies.php, class.wp-scripts.php, class.wp-styles.php. Bu fayllar siniflə prefiks olunur. , defis əvəzinə sinif sözündən sonra nöqtə.

Funksiya parametrlərində dəyişənlərin dəyərlərini təmizləyin

Boolean dəyərlərinə sətir dəyərlərinə üstünlük verilir. Bunlar. Funksiyaları çağırarkən doğru/yanlış əvəzinə, parametrin dəyərini izah edən bir növ sətirdən istifadə etmək daha yaxşıdır.

Səhv kod:

yemək funksiyası($nə, $yavaş = doğru) (... ) yemək("göbələk"); yeyin ("göbələk", doğru); // doğru nə deməkdir? yemək("sınaq yeməyi", yalan); // yalan nə deməkdir, doğrunun əksi?

PHP adlandırılmış arqumentləri dəstəkləmədiyi üçün bayraq dəyərləri mənasızdır və hər dəfə yuxarıdakı nümunələrdə olduğu kimi funksiya çağırışı ilə qarşılaşdıqda, funksiyanın sənədlərinə baxmalıyıq. Kod, boolean dəyərlər əvəzinə təsviri sətir dəyərlərindən istifadə etməklə daha oxunaqlı ola bilər.

Yaxşı kod:

yemək funksiyası($what, $sürət = "yavaş-yavaş") ( ... ) eat("göbələk"); yeyin ("göbələk", "yavaş-yavaş"); yeyin ("sınaq", "tez");

Daha çox funksiya parametrlərinə ehtiyacınız olduqda, $args massivindən istifadə edin. O, daha yaxşıdır!

Çox yaxşı kod:

Funksiya eat($what, $args) ( ... ) eat("əriştə", array("sürət" => "orta"));

Dinamik qarmaq adları üçün interpolyasiya

Oxunma və aşkarlama asanlığı üçün adlarında dəyişənləri olan qarmaqlar interpolyasiya edilməlidir (buruq mötərizələrə ( və ) daxil edilməlidir) və birləşdirilməməlidir:

Mötərizələr PHP-nin interpolyasiya edilmiş sətirdəki dəyişənlərin məlumat növlərini düzgün təhlil edə bilməsi üçün lazımdır.

// düzgün əməl_fəaliyyət("($new_status)_($post->post_type)", $post->ID, $post); // səhv edilən əməliyyat($new_status "_". $post->post_type, $post->ID, $post);

Mümkünsə, etiket adlarındakı dinamik dəyərlər də mümkün qədər qısa və dəqiq olmalıdır. $user_id, məsələn, $this->id-dən daha aydındır.

Üçlü operator

Üçlü operatorlar yaxşıdır, lakin onlar həmişə yalan ifadə deyil, doğru ifadə üçün test etməyi tövsiyə edirlər. Əks halda, ikiqat mənfi səbəbiylə sadəcə olaraq yanıltıcıdır. İstisna istifadədir! empty() çünki bəzən onu başqa cür yazmaq çətindir.

Necə yoxlamaq olar:

// (şərt doğrudursa = doğrudur) ? (sonra bunu edirik) : (əks halda bu); $music_type = ("caz" == $music) ? "cool" : "blah"; // (əgər dəyər boş deyilsə - ! boş) ? (sonra bunu edirik) : (əks halda bu);

Necə yazmamaq olar:

// (şərt yerinə yetirilmirsə!= doğru) ? (sonra bunu edirik) : (əks halda bu); $music_type = ("caz" != $music) ? "blah" : "sərin";

Master Yoda şərtləri

Məntiqi müqayisələr apararkən həmişə sola sabitlər və ya hərflər, sağa isə dəyişənlər qoyun.

Əgər (doğru == $the_force) ( $qalib = sən_olacaqsan($ol); )

Yuxarıdakı misalda ikinci = işarəsini buraxsaq (etiraf edək ki, bu, hətta bizim ən təcrübəlimizdə də olur), biz PHP xətası alacağıq və kod işləmədiyi üçün onu dərhal görəcəyik. Amma əgər konstruksiya bunun əksi olsaydı - $the_force = true , onda şərt həmişə yerinə yetirilərdi və biz heç bir səhv görməzdik və biz bəzən tutmaq çətin olan belə bir ciddi səhvi əldən verə bilərdik!

Sadəcə olaraq bu “baş aşağı” yazıya öyrəşmək lazımdır.

Bu, == , != , === və !== üçün də keçərlidir. "Yodanın şərtləri" üçün< , > , <= или >= oxumaq daha çətindir və onları burada istifadə etməmək daha yaxşıdır.

Ağıllı kod

Bir sözlə, kodun oxunaqlılığı ön planda olmalıdır, bu, qısalıqdan və ya bəzi aydın olmayan, lakin rahat abbreviaturalardan daha vacibdir.

Isset($var) || $var = bəzi_funksiya(); // və ya! isset($var) && $var = some_function();

Bəli - bu gözəl qeyddir, bunun təcrübəli bir proqramçı tərəfindən edildiyi aydındır. Ancaq hər hansı digər tərtibatçı və tez-tez hətta müəllif belə bir qeydi başa düşmək üçün bir az araşdırmalı və əlavə saniyələr və ya dəqiqələr sərf etməlidir. Bu açıq və aydın bir giriş deyil və ondan qaçınmaq lazımdır və daha uzun, lakin daha aydın yazmaq daha yaxşıdır:

Əgər (! isset($var)) ( $var = some_function(); )

Səhvlərin qarşısının alınması operatoru @

PHP bir səhv nəzarət operatorunu dəstəkləyir: @ işarəsi. PHP kodundakı hər hansı ifadədən əvvəl olarsa, bu ifadə tərəfindən yaradılan hər hansı səhv mesajları nəzərə alınmayacaq.

Bu operator nüvədə mövcud olsa da, dəyişəni düzgün emal etmək üçün çox tənbəl olduğu üçün tez-tez istifadə olunur. Onun istifadəsi güclüdür Məsləhət deyilçünki hətta PHP sənədlərində belə deyilir:

Diqqət: Bu gün "@" operatoru hətta skripti dayandıran kritik səhvlər haqqında mesajların çıxışını sıxışdırır. Digər şeylər arasında, bu o deməkdir ki, əgər siz funksiyanı işləyərkən baş verən səhvləri aradan qaldırmaq üçün "@" işarəsindən istifadə etsəniz, o, mövcud deyilsə və ya səhv yazılmışsa, skriptin sonrakı icrası heç bir xəbərdarlıq edilmədən dayandırılacaq.

WordPress.com bloqunuzda potensial təhlükəli koddan istifadə etməyə icazə vermir, lakin siz baxmaq üçün mənbə kodunu dərc edə bilərsiniz. Mənbə kodu formatını qoruyan və hətta bəzi dillər üçün sintaksisin vurğulanmasını təmin edən teq yaratdıq. Misal:

#düyməsinə ( şrift çəkisi: qalın; haşiyə: 2px bərk #fff; )

Yuxarıdakı parçaya oxşar nəticə əldə etmək üçün kodunuzu bu teqlərə sarın:

Sizin kodunuz

“Dil” parametri dili və sintaksisi vurğulama qaydalarını müəyyən edir. Aşağıdakı dəyərlər dəstəklənir:

  • actionscript3
  • soyuqdəymə
  • csharp
  • delphi
  • erlanq
  • fsharp
  • qəşəng
  • javascript
  • javafx
  • matlab
  • powershell
  • piton
  • skala

"Dil" parametrinin dəyəri göstərilməyibsə, "mətn" dəyəri istifadə olunur (sintaksis vurğulanmadan).
"Kod" teqləri arasındakı kod ekran üçün avtomatik olaraq kodlaşdırılacaq, buna görə də HTML elementləri və ya buna bənzər hər hansı bir şeydən narahat olmaq lazım deyil.

Konfiqurasiya seçimləri

Teqlər həmçinin onların görünüşünü fərdiləşdirmək üçün istifadə edə biləcəyiniz bir çox konfiqurasiya variantını dəstəkləyir. Onların istifadəsi tamamilə isteğe bağlıdır.

  • autolinks (true/false) - Koddakı hər bir URL hiperlink kimi göstərilir. Defolt dəyər: doğrudur.
  • çökmə (doğru/yanlış) - Doğru olaraq təyin olunarsa, səhifə yükləndikdə kod sahəsi yığcamlaşdırılacaq. Onu genişləndirmək üçün üzərinə klikləməlisiniz. Bu, böyük kod parçaları üçün faydalıdır. Defolt yanlışdır.
  • birinci sətir (nömrə) — Nömrələnmənin hansı nömrə sətirindən başladığını müəyyən edir. Defolt dəyər: 1.
  • oluk (doğru/yanlış) - Yanlış olaraq təyin olunarsa, sətir nömrələri gizlənəcək. Defolt dəyər: doğru.
  • vurğulamaq (vergüllə ayrılmış nömrələr) - Vurğulanacaq sətir nömrələri, məsələn, "4,7,19".
  • hmtlscript (doğru/yanlış) - Doğru olaraq təyin edilərsə, HTML/XML kodunu vurğulayır. Bu, HTML daxilində PHP kimi qarışıq kodu dərc edərkən faydalıdır. Yalnız bəzi dillərlə işləyir. Defolt dəyər: false.
  • işıq (doğru/yanlış) - Doğru olaraq təyin edilərsə, sətir nömrələri və alətlər paneli gizlənəcək. Bu, bir və ya iki sətirlik kod parçasını yerləşdirərkən faydalıdır. Defolt dəyər: false.
  • padlinenumbers (true/false/integer) - Sizə sıfırlarla sətir nömrələrinin doldurulmasına nəzarət etməyə imkan verir. true dəyəri avtomatik tamamlamanı təyin edir, false dəyəri tamamlamağı dayandırır, nömrə sətir nömrələri üçün sabit sayda simvol təyin edir.
  • alətlər paneli (doğru/yanlış) - Yanlış olaraq təyin olunarsa, kodun üzərində hərəkət edərkən düymələri olan alətlər paneli görünməyəcək. Defolt dəyər: doğrudur.
  • wraplines (doğru/yanlış) - Yanlış olaraq təyin olunarsa, xəttin sarılması deaktiv ediləcək. Uzun xətlər varsa, üfüqi sürüşmə çubuğu görünəcək.
  • başlıq (sətir) – kod üçün başlıq. Dağılma seçimi ilə birlikdə faydalı ola bilər.

Yuxarıdakı parametrlərdən istifadə nümunələri:

Bu xətt vurğulanmır. Bu xətt vurğulanır. Bu xətt vurğulanır. Bu xətt vurğulanmır. Bu, 4 simvola qədər sıfır doldurulmuş sətir nömrələri olan qısa kod parçasıdır. //Bu misalda sətirlərin sarılması qeyri-aktiv edilib. Bütün mətni oxumaq üçün sürüşdürmə çubuğundan istifadə etməli olacaqsınız. Bundan əlavə, bu nümunədə sətir nömrələməsi deaktiv edilib və alətlər paneli gizlədilib.

Və bu daha böyük kod parçasıdır. Burada PHP dili seçilir və 12 nömrəli sətir vurğulanır.

WordPress.com kodu nümunəsi

WordPress.com kodu nümunəsi

Bu xətt vurğulanır. Çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox, çox uzun xətt.
Bu smart tabların bir nümunəsidir.
WordPress.com

Təşəkkürlər
Bu xüsusiyyəti həyata keçirmək üçün SyntaxHighlighter layihəsindən (müəllif Aleks Qorbatçev) istifadə olunur. İstifadəçilər uyğun olanı təyin edə bilərlər

Kodun oxunması çox həssas mövzudur və ona lazımi diqqət yetirilməlidir. Bu yazıda siz bu mövzuda irəliləməyinizə kömək edəcək 16 texnikanı öyrənəcəksiniz.

1. Şərhlər və Sənədlər

IDE-lər inkişaf etdiricilər dünyasında getdikcə populyarlaşır, çünki... onlar kodu şərh etmək və sənədləşdirmək üçün rahat alətlər təqdim edirlər.

Budur bir nümunə:

Öz metodunuzu çağırmağın başqa bir nümunəsi:

Bu nümunədə şərh üslubu PHPDoc-a əsaslanır və mənim istifadə etdiyim IDE Aptana-dır.

2. Girintilər

Güman edirəm ki, kodunuzda abzasın vacibliyini artıq bilirsiniz. Ümumiyyətlə, kodun formatlaşdırılmasının bir neçə üslubu var.

foo() funksiyası ( əgər ($mümkün) ( do_it_now(); yenidən(); ) else ( abort_mission(); ) finalize(); )

foo() funksiyası ( əgər ($mümkün) ( do_it_now(); yenidən(); ) else ( abort_mission(); ) finalize(); )

foo() funksiyası ( əgər ($mümkün) ( do_it_now(); yenidən(); ) else ( abort_mission(); ) finalize(); )

Şəxsən mən ən çox #2 üslubdan istifadə edirəm, lakin bəzən #1-ə keçirəm. Ancaq bu, əlbəttə ki, zövq məsələsidir. Çox güman ki, tamamilə hər kəsə uyğun olacaq "ən yaxşı" üslub yoxdur. Bu qaydalara, ilk növbədə, bir komandada işləyən və ya açıq mənbəli layihələrin yazılmasında iştirak edənlər riayət etməlidirlər.

Müəyyən xüsusiyyətləri birləşdirən üslublar da var. Məsələn, şərti ifadələrdə "(" mötərizəsinin eyni sətirdə qaldığı, lakin funksiyalarda köçürüldüyü PEAR kodu yazı standartları.

Armud üslubu:

Funksiya foo() ( // yeni sətirdə if ($mümkün) ( // eyni sətirdə do_it_now(); yenidən(); ) else ( abort_mission(); ) finalize(); )

Onu da qeyd etmək lazımdır ki, bu üslubda nişanlar əvəzinə 4 boşluq istifadə olunur.

Fərqli üslublar haqqında daha çox məlumat əldə edə bilərsiniz.

3. Lazımsız şərhlərdən çəkinin

Bəli, şərh kodu yaxşıdır; bununla belə, həddindən artıq yüklənməyə ehtiyac yoxdur. Budur bir nümunə:

// ölkə kodunu alın $country_code = get_country_code($_SERVER["REMOTE_ADDR"]); // əgər ölkə ABŞ-dırsa if ($ölkə_kodu == "ABŞ") ( // echo form_input_state(); ) formasını göstərin

Kodun işi aydındırsa, çox güman ki, lazımsız şərhlər yazmamalısınız.

Əgər bunlar yoxdursa, onları bir az qısalda bilərsiniz:

// əgər ölkə ABŞ-dırsa formanı göstərin $ölkə_kodu = get_ölkə_kodu($_SERVER["REMOTE_ADDR"]); if ($ölkə_kodu == "ABŞ") ( echo form_input_state(); )

4. Kod qruplaşdırılması

Çox vaxt bəzi tapşırıqlar bir neçə sətir kod yazmağı tələb edir. Buna görə də, bu cür vəzifələri boşluqlarla ayrılmış ayrı bloklara birləşdirmək yaxşıdır.

Budur sadə bir nümunə:

// forumların siyahısını əldə edin $forums = array(); $r = mysql_query("Forumlardan identifikator, ad, təsviri SEÇİN"); while ($d = mysql_fetch_assoc($r)) ( $forums = $d; ) // şablonu yükləyin load_template("başlıq"); load_şablon("forum_siyahısı",$forumlar); load_şablon("altbilgi");

Hər blok başlamazdan əvvəl şərh əlavə etsəniz, bu, kodunuzun oxunuşunu daha da yaxşılaşdıracaq.

5. Adlandırma sxemi

Bəzən hətta PHP dilində funksiyaların adlandırılmasında uyğunsuzluqlar tapa bilərsiniz. Və burada çoxsaylı nümunələr var:

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

Bir neçə məşhur üslub var:

  • camelCase: hər yeni sözün ilk hərfini böyük hərflə yazır.
  • alt xətt: Sözlər arasında alt xətt çəkin: mysql_real_escape_string().

Bu üsulları qarışdırsanız, gec-tez siz yöndəmsiz vəziyyətə düşə bilərsiniz. Bu üsullardan birini istifadə edən bir layihə üzərində işləyirsinizsə, buna əməl etmək istərdiniz. Bu, hələ də proqramlaşdırma dilindən asılı ola bilər. Məsələn, Java tərtibatçılarının əksəriyyəti camelCase-dən istifadə edir, PHP tərtibatçıları isə alt xəttlərə üstünlük verirlər.

Ancaq burada da hibrid var idi. Bəzi tərtibatçılar siniflərin və metodların adlandırılmasında (siniflərdən kənar) alt xətt işarələrindən, digər hallarda isə camelCase-dən istifadə edirlər:

Class Foo_Bar ( ictimai funksiya someDummyMethod() ( ) ) funksiyası prosedur_funksiya_adı() ( )

Bir daha deyim ki, bundan yaxşı stil yoxdur. Sadəcə bir şeyə yapışmalısan.

6. DRY prinsipi

DRY (Özünüzü Təkrar Etməyin) - özünüzü təkrarlamayın. DIE kimi də tanınır: Duplication Evildir.

İstənilən sistemin əsas vəzifəsi, istər veb tətbiqi, istərsə də başqa bir şey, təkrarlanan tapşırıqları avtomatlaşdırmaqdır. Bu prinsipə həmişə və hər yerdə riayət edilməlidir, xüsusən də bir tərtibatçısınızsa. Eyni kod parçası təkrar-təkrar təkrarlanmamalıdır.

Məsələn, əksər veb proqramlar bir və ya bir neçə səhifədən ibarətdir. Bu səhifələrin eyni elementləri ehtiva edəcəyi aydındır. Başlıq və altbilgi ən parlaq nümunələrdir. Hər səhifədə bu elementləri nə qədər çox insanın təkrarladığına təəccüblənərdiniz.

$this->load->view("daxildir/başlıq"); $this->load->view($main_content); $this->load->view("daxildir/footer");

7. Dərin yuva qurmaqdan çəkinin

Dərin yuva qursanız, kodun oxunması kəskin şəkildə azalır.

Funksiya do_stuff() ( // ... if (is_writable($qovluq)) ( if ($fp = fopen($file_path,"w")) ( if ($stuff = get_some_stuff()) ( if (fwrite($) fp,$stuff)) ( // ... ) else ( false qaytarın; ) ) else ( yalanı qaytarın; ) ) else ( yalanı qaytarın; ) ) else ( yalanı qaytarın; ) )

Vəziyyəti düzəltmək üçün kodunuzun necə işlədiyini yenidən nəzərdən keçirməli və onu optimallaşdırmalısınız:

Funksiya do_stuff() ( // ... if (!is_writable($qovluq)) ( return false; ) if (!$fp = fopen($file_path,"w")) ( return false; ) if (!$stuff) = get_some_stuff()) ( false qaytarın; ) if (fwrite($fp,$stuff)) ( // ... ) else ( yalanı qaytarın; ) )

8. Xətt uzunluğu limiti

Hər kəs bilir ki, mətn sütunlara bölündükdə oxu prosesi çox daha zövqlü olur. Qəzetlərimizin belə görünməsinin əsas səbəbi budur:

Bənzər bir texnika kodumuza tətbiq edilə bilər:

// pis $my_email->set_from(" [email protected]") -> əlavə_to(" [email protected]")->set_subject("Zəncirvari üsullar")->set_body("Bəzi uzun mesaj")->send(); // yaxşı $my_email ->set_from(" [email protected]") ->əlavə_əla(" [email protected]") ->set_subject("Zəncirvari üsullar") ->set_body("Bəzi uzun mesaj") ->send(); // bad $query = "İstifadəçilərdən identifikator, istifadəçi adı, ad, soyad, status SEÇİN SOL OLUN user_posts İSTİFADƏ EDİN. (users.id, user_posts.user_id) WHERE post_id = "123""; // bad $query = "İstifadəçilərdən id, istifadəçi adı, ad, soyad, status SEÇİN user_posts İSTİFADƏ EDİLƏN SALDIQ (users.id, user_posts.user_id) HARADA post_id = "123"";

Əksər tərtibatçılar 80 və 120 simvol limitlərinə sadiq qalırlar.

9. Fayl və Qovluqların təşkili

Texniki olaraq tətbiqinizin bütün kodunu bir fayla yerləşdirə bilərsiniz :) Amma nəyisə dəyişmək və ya əlavə etmək lazım olanda nə edəcəksiniz.

Faylları əlavə etdiyim ilk layihələrimi xatırlayıram. Halbuki mənim təşkilatım çox zəif idi. Mən bir neçə fayl yerləşdirdiyim “inc” qovluğu yaratdım: db.php və functions.php. Ərizənin yazılması zamanı bu qovluq getdikcə böyüyürdü və sonda nəyin harada olduğunu anlamaq çətin idi.

Bu problemi həll etmək üçün müxtəlif növ çərçivələrdən istifadə etmək və ya heç olmasa onların strukturuna riayət etmək daha yaxşıdır. Layihə CodeIgniter-də belə görünür:

10. Dəyişən adları

Ümumiyyətlə, dəyişən adları tamamilə mənalı olmalıdır - bu idealdır. Müvəqqəti dəyişənlər üçün istisna edilə bilər.

Bir neçə nümunəyə baxaq:

// Döngələr üçün $i 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) ( ) // mysql üçün $q, $r və $d $q = "Cədvəldən SEÇİN"; $r = mysql_query($q); while ($d = mysql_fetch_assocr($r)) ( ) // fayllarla işləmək üçün $fp $fp = fopen("file.txt","w");

11 - SQL-də açar sözləri böyük hərflərlə yazın

Əksər veb proqramlar verilənlər bazası ilə qarşılıqlı əlaqədə olur. Əgər siz SQL sorğularını özünüz yazırsanız, o zaman onları da buna uyğun formatlamalısınız... Burada mürəkkəb heç nə yoxdur. Sadəcə açar sözlərinizi böyük hərflərlə yazın.

12. Ayrı-ayrı kod və verilənlər

Bu, daha başa düşülən proqramlar yazmağınıza kömək edəcək başqa bir prinsipdir. Bu, məlumatların bir yerdə (məsələn, modellər) hazırlanmasını və digər yerdə onlarla qarşılıqlı əlaqəni əhatə edir.

PHP ilk dəfə inkişaf etməyə başlayanda daha çox şablon sisteminə bənzəyirdi. Bu dildəki layihələr qarışıq HTML və PHP kodunu ehtiva edirdi. İndi hər şey dəyişdi və hər kəs ərizə yazmağın növbəti səviyyəsinə keçməlidir.

Özünüz üçün xüsusi bir üslub hazırlaya bilərsiniz və ya bu gün ən populyar vasitələrdən istifadə edə bilərsiniz.

Populyar PHP Çərçivələri:

Şablon Sistemləri:

Populyar CMS

13. Şablonlar üçün xüsusi sintaksis

Şablonlaşdırma sistemindən istifadə etmək istəmirsinizsə, o zaman çox güman ki, PHP kodunu HTML-yə daxil etmək üçün öz üslubunuzu inkişaf etdirməli olacaqsınız.

Və burada bir nümunə var:

Salam, istifadəçi adı; ?>
|

Mənim Mesaj Panelim

başlıq; ?>

Forumlar $forum olaraq): ?>

id, $forum->title) ?> (Threads->count(); ?> mövzular)

təsvir; ?>

Bu texnika sizə lazımsız mötərizələrdən qaçmağa imkan verəcək. Həmçinin, belə kod HTML kontekstinə yaxşı uyğun gəlir.

14. Prosedur və obyekt yönümlü yanaşmalar

Obyekt yönümlü proqramlaşdırma sizə az-çox aydın struktura sadiq qalmağınıza kömək edəcək, lakin bu o demək deyil ki, siz ərizələrin yazılmasının prosedur prinsiplərindən kənara çıxmalısınız.

Obyektlər məlumatları təmsil etmək üçün əladır. Misal:

Class User ( ictimai $username; public $first_name; public $last_name; public $email; public function __construct() ( // ... ) public function create() ( // ... ) public function save() ( / / ... ) ictimai funksiyanı sil () ( // ... ) )

Prosedur üsullarının özünəməxsus üstünlükləri var.

Funksiya kapitallaşması($string) ( $ret = strtoupper($string); $ret .= strtolower(substr($string,1)); return $ret; )

15. Açıq Mənbə Kodunu oxuyun

Açıq mənbə layihələri adətən çoxlu sayda tərtibatçı tərəfindən yazılır. Bu baxımdan oxşar layihələrdə yazılı kodu öyrənmək sizə təcrübə qazandıra bilər. Odur ki, vaxtınızı buna sərf etməyin.

16. Refaktorinq

Refaktorinq funksionallığı itirmədən kodu dəyişdirməkdir. O, həmçinin oxunaqlılığı yaxşılaşdırmaq üçün istifadə edilə bilər. Səhvləri düzəltmək və ya funksionallıq əlavə etmək üçün yer yoxdur. Sadəcə kodunuzun strukturunu bir az dəyişdirirsiniz.

Ümid edirəm bu məqaləni faydalı tapdınız! Mən nəyisə itirmişəm? Təcrübənizi paylaşın!