Care este semnificația %s, %1$s etc.?

27 sept. 2013, 17:15:42
Vizualizări: 89.9K
Voturi: 18

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ă.

7
Comentarii

Aceasta este PHP simplu. Vezi sprintf().

fuxia fuxia
27 sept. 2013 17:23:58

Codex-ul există pentru a oferi documentație specifică WordPress. Nu este menit să învețe programare PHP, iar toate întrebările tale sunt despre programarea PHP. Documentația PHP poate fi găsită pe php.net, iar multe tutoriale pentru începători în PHP pot fi găsite folosind Google.

Ben Miller Ben Miller
27 sept. 2013 17:50:03

@BenMiller: Te rog să ai răbdare. Înainte de comentariul lui toscho, nici măcar nu eram conștient de poziția întrebării. Acum este aproape clar cu răspunsul lui Dave.

Mayeenul Islam Mayeenul Islam
27 sept. 2013 17:56:38

@MayeenulIslam, încercam doar să explic de ce nu găsești astfel de explicații în Codex. Îmi pare rău dacă am părut nerăbdător.

Ben Miller Ben Miller
27 sept. 2013 18:08:41

@BenMiller-RememberMonica, și eu am perceput asta ca nerăbdare, deoarece prima mea impresie este că ceea ce sugerezi ar închide Stack Exchange, întrucât aproape toate întrebările adresate pot fi găsite în manuale, iar orice întrebări specifice pot fi derivate prin gândire creativă. :-) Oricum, da, Codex este un instrument minunat, dar Google direcționează fluxul în această întrebare aici ;)

Yannis Dran Yannis Dran
10 mar. 2022 13:38:15

@YannisDran Acest site (Wordpress.SE) este pentru întrebări specifice WordPress. Întrebările generale despre programarea în PHP aparțin de StackOverflow. Comentariul meu despre Codex a fost ca răspuns la propoziția din întrebarea OP care se întreba de ce nu găsește răspunsul la întrebare în Codex.

Ben Miller Ben Miller
10 mar. 2022 13:43:42

@YannisDran În final, când am scris cuvintele „toate întrebările tale”, nu mă refeream la celelalte postări ale OP-ului; mă refeream la multiplele întrebări din acest post, toate fiind în afara temei pe acest site și niciuna dintre ele nu va avea răspunsuri în Codex pentru că nu sunt despre WordPress.

Ben Miller Ben Miller
10 mar. 2022 13:50:19
Arată celelalte 2 comentarii
Toate răspunsurile la întrebare 1
4
14

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.

27 sept. 2013 17:33:22
Comentarii

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

Mayeenul Islam Mayeenul Islam
27 sept. 2013 17:44:23

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

Pat J Pat J
27 sept. 2013 17:55:23

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

Pat J Pat J
27 sept. 2013 17:57:15

FIY dublu două puncte este folosit pentru a accesa doar metodele și proprietățile statice sau suprascrise ale unei clase, iar pentru metodele obișnuite se folosește -> de exemplu $myObject->someMethod();

ed-ta ed-ta
11 iun. 2015 19:56:45