Programmazione con Yii2 aiutanti

Cosa starai creando

Se stai chiedendo "Cos'è Yii?" check-out Introduzione al framework Yii, che rivede i vantaggi di Yii e include una panoramica di Yii 2.0.

Cosa sono gli aiutanti?

Nella serie Programming with Yii2, guido i lettori nell'uso di Yii2 Framework per PHP. In questo tutorial fornirò una breve panoramica degli helper. In Yii, gli helper sono moduli che raggruppano le librerie comunemente utili per la gestione di stringhe, file, immagini, URL e HTML, tra le altre cose, e sono facili da estendere.

Condividerò anche un esempio di creazione di un helper in Meeting Planner, il fulcro della nostra serie di startup Envato Tuts +. 

Prima di iniziare, ricorda, cerco di partecipare alle discussioni di seguito. Se hai una domanda o un suggerimento sull'argomento, per favore pubblica un commento qui sotto o contattami su Twitter @reifman. 

Se hai notato il divario tra gli episodi della serie di programmazione Yii, è perché dovevo averlo chirurgia cerebrale l'anno scorso. Grazie per la vostra pazienza e supporto: è bello scrivere di nuovo regolarmente, e non vedo l'ora di continuare la copertura di Yii2.

Librerie helper Yii2

In sostanza, gli helper sono solo moduli di supporto per la codifica orientato alla topica. Ecco una lista di helper forniti come parte di Yii2: questa lista è ora un po 'più aggiornata della documentazione e dei suoi menu:

  • ArrayHelper semplifica la gestione dell'array con funzioni come ricerca di valori, mappatura, fusione, ecc.
  • La console assiste con la funzionalità della riga di comando, raccoglie input e emette testo colorato.
  • FileHelper estende le funzionalità di gestione dei file PHP di base.
  • FormatConverter converte diversi formati, per lo più date per ora.
  • HTML genera programmaticamente tag HTML di uso comune.
  • HtmlPurifier pulisce il testo di input dagli utenti per migliorare la sicurezza.
  • Imagine fornisce funzionalità di manipolazione delle immagini fornite dall'estensione yii2-imagine.
  • Inflector fornisce utili funzioni stringa per trasformazioni comuni.
  • Json codifica e decodifica i dati JSON.
  • Markdown converte markdown in HTML.
  • StringHelper estende le funzioni PHP di base per le stringhe.
  • L'Url aiuta a creare URL in modo programmatico e a ricordarli per la navigazione.
  • VarDumper fornisce una funzionalità var_dump avanzata.

Uso comunemente gli helper Html e Url nelle mie applicazioni Yii. E, potresti ricordare, ho utilizzato l'helper Imagine in Building Your Startup con PHP: Impostazioni utente, immagini del profilo e dettagli del contatto per ridimensionare le immagini del profilo caricato.

Diamo una breve occhiata ad alcuni degli aiutanti meno conosciuti.

ArrayHelper

Come puoi vedere, ArrayHelper offre una manciata di utili funzioni orientate agli array.

Ad esempio, getValue semplifica la ricerca dei valori delle chiavi negli array complessi:

// lavora con array $ username = \ yii \ helpers \ ArrayHelper :: getValue ($ _ POST, 'username'); // lavora con oggetto $ username = \ yii \ helpers \ ArrayHelper :: getValue ($ user, 'username'); // funziona con la funzione anonima $ fullName = \ yii \ helpers \ ArrayHelper :: getValue ($ utente, funzione ($ utente, $ defaultValue) return $ user-> firstName. ". $ user-> lastName;); / / utilizzando il formato punto per recuperare la proprietà dell'oggetto incorporato $ street = \ yii \ helpers \ ArrayHelper :: getValue ($ users, 'address.street'); // utilizza un array di chiavi per recuperare il valore $ value = \ yii \ helpers \ ArrayHelper :: getValue ($ versions, ['1.0', 'date']);

Oppure map () crea un array di valori chiave semplice da un array più complesso:

$ array = [['id' => '123', 'name' => 'aaa', 'class' => 'x'], ['id' => '124', 'name' => 'bbb ',' class '=>' x '], [' id '=>' 345 ',' name '=>' ccc ',' class '=>' y '],]; $ result = ArrayHelper :: map ($ array, 'id', 'name'); // il risultato è: // [// '123' => 'aaa', // '124' => 'bbb', // '345' => 'ccc', //] 

HtmlPurifier

È possibile utilizzare HtmlPurifier per migliorare la sicurezza della gestione con l'input dell'utente. Ad esempio, se qualcuno incolla codice di iniezione SQL nel tuo modulo come sopra, pulendolo con HtmlPurifier neutralizzerà qualsiasi attacco.

echo HtmlPurifier :: process ($ html); 

Sfrutta la libreria Purifier HTML open-source.

StringHelper

StringHelper fornisce alcuni metodi estesi per lavorare con le stringhe in PHP. Ad esempio, truncateWords () può ridurre una stringa in un determinato numero di parole, ma anche conservare l'HTML corretto all'interno del risultato.

Costruisci il tuo aiuto

Dato che Meeting Planner, il fulcro della serie di startup, è diventato più grande, ho trovato utile creare un helper di base che potessi usare. Per ora, ho combinato tutto in uno chiamato MiscHelpers.php:

Puoi vedere una varietà di metodi inclusi in diversi tipi. Per esempio, getDisplayName () restituisce un nome utente, un'e-mail o stringhe concatenate di nome e cognome quando disponibili.

È utile crearli una volta in un singolo posto piuttosto che riscriverli in modi diversi nei modi in cui sono necessari.

Ho creato MiscHelpers.php creando un file in / common / components e costruendo una classe che potrei invocare per tutta l'applicazione.

Il buildCommandLa funzione semplifica la creazione di collegamenti a livello di codice per i messaggi e-mail in uscita che includono la possibilità di autenticare gli utenti con il $ auth_key memorizzato nel database.

funzione statica pubblica buildCommand ($ meeting_id, $ cmd = 0, $ obj_id = 0, $ actor_id = 0, $ auth_key = ") // to do - crea una stringa di destinazione locale o remota // nota: se la modifica è stata apportata, cambia in Message.php return Url :: to (['meeting / command', 'id' => $ meeting_id, 'cmd' => $ cmd, 'actor_id' => $ actor_id, 'k' => $ auth_key, ' obj_id '=> $ obj_id,], true); 

Non c'è niente di speciale in questo modulo se non che assomiglia all'obiettivo degli Helpers standard di Yii che ho descritto in precedenza.

Ovunque voglio usare le funzioni di MiscHelper, posso usare il seguente codice: