Programmeren met Yii2 helpers

Wat je gaat creëren

Als je vraagt: "Wat is Yii?" uitchecken Introductie tot het Yii Framework, die de voordelen van Yii beoordeelt en een overzicht van Yii 2.0 bevat.

Wat zijn helpers?

In de Programming With Yii2-serie begeleid ik lezers in gebruik van het Yii2 Framework voor PHP. In deze zelfstudie geef ik een kort overzicht van helpers. In Yii zijn helpers modules die algemeen bruikbare bibliotheken groeperen voor onder meer string-, bestands-, image-, URL- en HTML-beheer, en ze zijn eenvoudig uit te breiden.

Ik zal ook een voorbeeld geven van het maken van een helper in Meeting Planner, de focus van onze Envato Tuts + opstartreeks. 

Voordat we van start gaan, onthoud alsjeblieft dat ik probeer deel te nemen aan de onderstaande discussies. Als je een vraag of een suggestie voor een onderwerp hebt, plaats dan een reactie hieronder of neem contact met mij op via Twitter @reifman. 

Als je de kloof tussen de programmeerperiodes van de Yii-serie hebt opgemerkt, komt dat omdat ik het moest hebben hersenoperatie vorig jaar. Bedankt voor uw geduld en ondersteuning - het is goed om regelmatig opnieuw te schrijven en ik kijk uit naar de voortzetting van de dekking van Yii2.

Yii2 Helper-bibliotheken

In wezen zijn helpers slechts modules met topisch georiënteerde codeerondersteuning. Hier is een lijst met helpers die wordt aangeboden als onderdeel van Yii2-deze lijst is nu een beetje meer up-to-date dan de documentatie en de menu's:

  • ArrayHelper vereenvoudigt de verwerking van de array met functies zoals het veilig opzoeken van waarden, in kaart brengen, samenvoegen, enz.
  • De console ondersteunt de opdrachtregelfunctionaliteit en verzamelt invoer en uitvoer van gekleurde tekst.
  • FileHelper breidt elementaire functies voor PHP-bestandsbeheer uit.
  • FormatConverter converteert verschillende indelingen, meestal data voor nu.
  • HTML genereert programmatisch veelgebruikte HTML-tags.
  • HtmlPurifier reinigt invoertekst van gebruikers om de beveiliging te verbeteren.
  • Imagine biedt functies voor beeldmanipulatie die worden geboden door de extensie yii2-imagine.
  • Inflector biedt nuttige stringfuncties voor veelvoorkomende transformaties.
  • Json codeert en decodeert JSON-gegevens.
  • Markdown converteert markdown naar HTML.
  • StringHelper breidt de basis PHP-functies voor strings uit.
  • Url helpt bij het programmatisch maken van URL's en het onthouden van deze voor navigatie.
  • VarDumper biedt een geavanceerde var_dump-functie.

Ik gebruik de helpers van Html en Url vaak in mijn Yii-toepassingen. En, je herinnert je misschien, ik gebruikte de Imagine helper bij het opbouwen van je start met PHP: gebruikersinstellingen, profielafbeeldingen en contactgegevens om geüploade profielfoto's te schalen..

Laten we een korte blik werpen op enkele minder bekende helpers.

ArrayHelper

Zoals u kunt zien, biedt ArrayHelper een handvol handige array-georiënteerde functies.

GetValue vereenvoudigt bijvoorbeeld het opzoeken van waarden van sleutels in complexe arrays:

// werken met array $ username = \ yii \ helpers \ ArrayHelper :: getValue ($ _ POST, 'gebruikersnaam'); // werken met object $ gebruikersnaam = \ yii \ helpers \ ArrayHelper :: getValue ($ user, 'username'); // werken met anonieme functie $ fullName = \ yii \ helpers \ ArrayHelper :: getValue ($ user, function ($ user, $ defaultValue) return $ user-> firstName. ". $ user-> lastName;); / / met behulp van puntindeling om de eigenschap van ingesloten object $ street = \ yii \ helpers \ ArrayHelper :: getValue ($ users, 'address.street'); // met een reeks sleutels op te halen om de waarde $ value = \ yii op te halen \ helpers \ ArrayHelper :: getValue ($ versies, ['1.0', 'date']);

Of map () bouwt een eenvoudige array met sleutelwaarden op uit een complexere array:

$ 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'); // het resultaat is: // [// '123' => 'aaa', // '124' => 'bbb', // '345' => 'ccc', //] 

HtmlPurifier

U kunt HtmlPurifier gebruiken om de beveiliging van het gebruik met gebruikersinvoer te verbeteren. Als iemand bijvoorbeeld SQL-injectiekode in uw formulier plakt zoals hierboven, zal het opschonen met HtmlPurifier elke aanval neutraliseren.

echo HtmlPurifier :: proces ($ html); 

Het maakt gebruik van de open-source HTML Purifier-bibliotheek.

StringHelper

StringHelper biedt enkele uitgebreide methoden om met strings in PHP te werken. TruncateWords () kan bijvoorbeeld een tekenreeks reduceren tot een bepaald aantal woorden, maar ook de juiste HTML binnen het resultaat behouden.

Bouw je eigen helper

Toen Meeting Planner, de focus van de startup-serie, groter werd, vond ik het nuttig om een ​​basishelper te maken die ik kon gebruiken. Voor nu combineerde ik alles tot een genaamd MiscHelpers.php:

Je kunt een verscheidenheid aan methoden zien van verschillende typen. Bijvoorbeeld, getDisplayName () geeft, indien beschikbaar, een gebruikersnaam, een e-mailadres of aaneengesloten tekenreeksen van voor- en achternaam.

Het is handig om deze één keer op één plek te maken in plaats van ze anders in modellen te herschrijven wanneer ze nodig zijn.

Ik heb MiscHelpers.php gemaakt door een bestand in / common / components te maken en een klasse te maken die ik gedurende de hele applicatie zou kunnen gebruiken.

De buildCommandfunctie maakt het eenvoudig om koppelingen voor uitgaande e-mailberichten programmatisch te bouwen, met de mogelijkheid om gebruikers te authenticeren met de $ auth_key opgeslagen in de database.

openbare statische functie buildCommand ($ meeting_id, $ cmd = 0, $ obj_id = 0, $ actor_id = 0, $ auth_key = ") // to do - tekenreeks van lokale of externe bestemming maken // let op: wijzig de wijzigingen 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); 

Er is niets bijzonders aan deze module anders dan dat het lijkt op het doel van de standaard Yii Helpers die ik eerder heb beschreven.

Overal waar ik de MiscHelper-functies wil gebruiken, kan ik de volgende code gebruiken: