Qual è il significato di %s, %1$s ecc.?
Da una discussione Q&A mi sono imbattuto in alcune cose del passato, ma mi trovo nella condizione di non conoscerne ancora il significato e non sapere perché utilizzarle.
%1$s
- (trovato per caricare l'ID del widget)%2$s
- (trovato per caricare la/le classe/i del widget)%s
- (trovato qui)
E come funzionano le seguenti cose? Intendo quale è la spiegazione del formato del codice?
!Website::getThemeOption("format_post/{$post_format}/content/hide")):
- (trovato qui)if( !wp_verify_nonce( $_POST['my_noncename'] ) plugin_basename( __FILE__ ) ) return;
- (trovato qui)
So che questa domanda potrebbe continuare all'infinito... Lo so. Ma cose come queste non sono chiaramente spiegate da nessuna parte. Non voglio solo conoscere il loro significato e scopo, ma vorrei anche una spiegazione interna/core per capire le loro motivazioni e come funzionano.
Inoltre, se tali argomenti sono già chiaramente definiti nel Codex, mi piacerebbe leggerli. E mi piacerebbe avere una lista di queste curiosità se tale elenco è già stato compilato.
Questa è più una domanda generale sulla programmazione in PHP e potrebbe essere chiusa per questo motivo. Ma prima che accada, vediamo se riesco a chiarire alcuni di questi punti per te.
Quelle stringhe che iniziano con il segno di percentuale sono in "formato printf". Ad esempio, %2$s
si traduce con "sostituisci questo token con il secondo parametro e trattalo come una stringa".
Quando vedi una variabile tra parentesi graffe all'interno di una stringa, come "Oggi è {$day}"
, è lo stesso che mettere la variabile lì senza parentesi graffe, come "Oggi è $day"
. Ma formattare la variabile in questo modo la fa risaltare, quindi è più chiaro che c'è una variabile lì. Inoltre impedisce che altri caratteri accanto al nome della variabile vengano interpretati come parte del nome. Senza parentesi graffe, PHP saprebbe cosa fare con "Il nome del tuo robot sarebbe {$firstName}Number5"
? Vedrebbe "$firstNameNumber5"
e cercherebbe una variabile chiamata $firstNameNumber5 invece di semplicemente $firstName.
Non sono sicuro di cosa tu stia chiedendo nell'ultimo esempio. È __FILE__
che ti confonde? Questa è una Costante Magica di PHP che viene sostituita con il percorso completo del file in cui si trova quel pezzo di codice.

Prima di chiudere solo un'ultima domanda semplice: !Website::
. Perché i due punti doppi qui?

Il ::
ha a che fare con la programmazione orientata agli oggetti -- nel caso di Website::getThemeOption
, stai chiamando la funzione getThemeOption
che appartiene alla classe Website
.

Inoltre: {$var}
aiuta PHP a distinguere tra qualcosa come {$complete_variable_name}
e {$prefix}_rest_of_name
, per esempio.
