Care este semnificația %s, %1$s etc.?
Dintr-un thread de întrebări și răspunsuri am ajuns să întâlnesc câteva lucruri vechi, dar mă tem că mă aflu într-o situație în care încă nu știu semnificația lor și nu știu de ce să le folosesc.
%1$s
- (găsit pentru încărcarea id-ului widget-ului)%2$s
- (găsit pentru încărcarea clasei/claselor widget-ului)%s
- (găsit aici)
Și cum funcționează următoarele lucruri? Adică care este explicația formatului de cod?
!Website::getThemeOption("format_post/{$post_format}/content/hide")):
- (găsit aici)if( !wp_verify_nonce( $_POST['my_noncename'] ) plugin_basename( __FILE__ ) ) return;
- (găsit aici)
Această întrebare poate continua la nesfârșit..., știu. Dar lucruri ca acestea nu sunt explicate clar nicăieri. Nu vreau doar să știu semnificația și scopurile lor, ci vreau și o explicație internă/de bază astfel încât să pot înțelege motivele și modul în care funcționează.
De asemenea, dacă astfel de lucruri sunt deja definite clar în Codex, mi-ar plăcea să le citesc. Și mi-ar plăcea să am o listă cu astfel de lucruri curioase dacă o astfel de listă este deja organizată.
Aceasta este mai degrabă o întrebare generală de programare PHP și s-ar putea să fie închisă din acest motiv. Dar înainte ca asta să se întâmple, să vedem dacă nu pot clarifica câteva aspecte pentru tine.
Acele șiruri de caractere care încep cu semnul % sunt în "format printf". De exemplu, %2$s
se traduce prin "înlocuiește acest token cu al doilea parametru și tratează-l ca un șir de caractere".
Când vezi o variabilă între acolade în interiorul unui șir de caractere, cum ar fi "Astăzi este {$day}"
, asta este același lucru ca și cum ai pune variabila acolo fără acolade, precum "Astăzi este $day"
. Dar formatarea variabilei în acest mod o face să iasă în evidență, așa că este mai clar că există o variabilă acolo. De asemenea, previne interpretarea altor caractere adiacente ca parte a numelui variabilei. Fără acolade, PHP ar ști ce să facă cu "Numele tău de robot ar fi {$firstName}Number5"
? Ar vedea "$firstNameNumber5"
și ar căuta o variabilă numită $firstNameNumber5 în loc de simplul $firstName.
Nu sunt sigur despre ce întrebi în ultimul exemplu. Te referi la __FILE__
care te încurcă? Acesta este un Constantă Magică PHP care este înlocuită cu calea completă către fișierul în care se află acel fragment de cod.

Înainte de a închide, doar ultima întrebare simplă: !Website::
. De ce avem două puncte acolo?

Semnul ::
are legătură cu programarea orientată pe obiecte -- în cazul Website::getThemeOption
, apelezi funcția getThemeOption
care aparține clasei Website
.

De asemenea: {$var}
ajută PHP să distingă între ceva de genul {$complete_variable_name}
și {$prefix}_rest_of_name
, de exemplu.
