Budite oprezni s PHP-om kada ga koristite u WordPress prečacima

Vrlo često postoje primjeri na web-resursima za proučavanje i razvoj dodataka za Wordpress, koji sugeriraju da je PHP prazan kako bi provjerili atribute kratkih kodova. Ali shvatimo kako ova funkcija funkcionira i koje se pogreške mogu pojaviti ako se ne koristi ispravno.

Značajke funkcije empty (), koje trebate znati

Prema uputama na php.net, ova funkcija provjerava je li prazna varijabla prazna. Ako varijabla ne postoji, prazna () neće dati pogrešku. Na primjer, neka varijabla $ foo ne bude postavljena na:

ako je (prazna ($ foo)) {echo "varijabla prazna";} //će prikazati "varijabla je prazna"
7) Stoga je potrebna dodatna provjera pomoću isset () funkcije:

$ foo = 1; 
if (isset ($ foo) & prazan ($ foo)) {echo "variable =". $ foo;} //će prikazati "variable = 1"

, koji PHP prazan () smatra praznim, je:

  • "(redovi - strlen (")) == 0);
  • 0 (cijeli brojevi - (int) 0);
  • 0.0 (plutajući brojevi - 0.0)
  • "0" (nizovi - strlen ("0") == 1),
  • NULL;
  • FALSE
  • niz () (prazni nizovi - brojanje (array ()) == 0).
$ string_1 = ";
echo strlen ($ string_1); //izlaz 0
ako (prazno ($ string_1)) {echo 'string_1 je prazno';} //će ispisati string_1 je prazan

$ string_2 = '0';
echo strlen ($ string_2); //izlaz 1
ako (prazno ($ string_2)) {echo 'string_2 je prazno';} //vraća "string_2 je prazan"

Niz ($ string_2), koji je jedan znak s nizom nula ('0'), također izgleda prazan.

& lt; skripta async = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
& lt ;! - fb_336x280_1 - & gt;

& lt; script & gt; (adsbygoogle = prozor.

$ string_3 = '';
jekastrlen ($ string_3); //ispisat će 1
ako (prazno ($ string_3)) {echo 'string_3 je prazno';} //ništa neće biti izvedeno

Razmotrimo praktičnu primjenu PHP-a prazno i ​​vidjeti kako ova funkcija može dovesti do neočekivanih rezultata.

Primjena funkcije empty () na provjeru atributa kratkog koda u WordPress pluginovima

Na primjer, razvijate dodatak za Wordpress, koji će koristiti kratke kodove za prikazivanje članaka različitih autora. Na stranici računa svaki će autor u posljednjem mjesecu prikazati vlastite članke ("sebe") i članke drugih autora ("drugo"). Pomoću kratkog koda možete kontrolirati broj izlaza članka. Prema zadanim postavkama, ako atributi "self" i "another" nisu postavljeni, ispišite, na primjer, 25 vlastitih postova i 15 postova drugih autora.

& lt; skript async = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
& lt ;! - fb_336x280_2 - & gt;

& lt; skripta & gt; (adsbygoogle = window.adsbygoogle || []). push ({});
[author_posts]

Za promjenu vrijednosti, dodajte druge brojeve atributa shortcode:

[author_posts self = "10" another = " 5]]

Da vidimo što je u kodu dodatka:

",
'drugo' = & gt;"
,
$ atts,
'autor_posts'
);
ako (! Empty ($ atts ['self'])) {
echo $ atts ['self']. "Post (ovi)";
} drugo {
echo "25 samostalnih postova";}
ako (! Empty ($ atts ['drugi'])) {
echo $ atts ['drugi']. s) ";
} else {
echo "15 postova drugih autora";
}
}
add_shortcode ('author_posts', 'posts_shortcode');

Ovdje jednostavno ispisujemo podatke koje je korisnik prenio putem kratkog koda. Kao rezultat toga, vidjet ćemo 10 vlastitih postova i 5 drugih autora.


& lt; script type = "text /javascript" & gt;
može blockSettings2 = {blockId: "R-A-70350-39", renderTo: "yandex_rtb_R-A-70350-39", async: 0};
ako (document.cookie.indexOf ("abmatch =") & gt; = 0)blockSettings2.statId = 70350;
Funkcija (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (funkcija () {Ya.Context.AdvManager.render (blockSettings2)}), e = b.getElementsByTagName ("script") , d = b.createElement ("script"), d.type = "text /javascript", d.src = "//an.yandex .ru /system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (ovaj, ovaj.dokument," yandexContextAsyncCallbacks ");

Ako ne želimo vidjeti, primjerice, postove drugih autora, onda ćemo u kratki kod "drugi = 0" upisati, a postovi drugih autora neće biti prikazani. Ali ne! Funkcija PHP empty () smatra da je niz "0" kao prazna vrijednost i umjesto "0" postova drugih autora, prikazuje zadanu vrijednost, odnosno 15 unosa umjesto nule.

Drugim riječima, ova dva slična zapisa:

[author_posts another = "0"]
[author_posts]

Da bi ispravno funkcionirao ispravno , promijeni uvjet:

$ is_null = (int) (- 1); 

'drugo' = & gt; $ is_null,

if ($ atts ['drugi']> -1) {
echo $ atts ['drugi'].
} else {
echo "15 postova drugih autora";
}

Ako atribut "drugo" nije specificiran, onda je zadano neka bude (-1). Tada ćemo u uvjetu pretpostaviti da je atribut dan ako je više (-1).

Dakle, ovaj kratki kod:

[author_posts another = "0"]

sada nam ispravno prikazuje, to jest, po zadanom, 25 članaka autora (na primjer, atribut "self" nije naveden) i nema članaka drugih autora.

Puni kod:

", 
" drugo "=> $ is_null,
,
$ atts, 115) 'autor_posts'
)
ako (! Empty ($ atts ['self'])) {
echo $ atts ['self']. mail (s)
";
} else {
echo" 25 samostalnih postova
";}
if ($ atts ['drugi']> -1) {{124} echo $ atts ['drugi']. "
}
}
add_shortcode ('author_posts', 'posts_shortcode');
}
}


Možete se sjetiti vlastitog stanja, važno je,da ste vidjeli značajke funkcije empty () i da i dalje ne griješite kada je koristite. Stavite ovu datoteku u Wordpress mapu "/wp_content /plugins /" aktivirajte dodatak u admin panelu, to će raditi.

Opcije za zamjenu praznih () drugih PHP funkcija

Da bismo razumjeli što zamijeniti prazno (), moramo znati što imamo, na primjer:
  • ako je to polje (array ()), bolje je provjeriti njegove funkcije broje ili veličine;
  • Ako varijabla može biti lažna, upotrijebite if (false == $ var);
  • ako varijabla nije postavljena, tada upotrebom iset ili is_null ();
  • brojevi su is_numeric ().
  • Mnoge se opcije mogu pronaći kako bi vaš program radio što točnije, napisati vlastitu funkciju, koja će analizirati podatke onako kako vam je potrebna. Otkrili smo da je prazan PHP funkcija koja provjerava je li varijabla prazna. Morate zapamtiti koje su vrijednosti varijabli postavljene na nulu ako ih koristite u kodu, tako da ne morate tražiti zašto program ne radi ispravno.

    Povezane publikacije