Modelele de date sunt modalitatea frumoasa de a lucra cu date structurate, cum ar fi matricile JSON, XML si php. Acestea sunt, practic, clase de invelire a sirurilor JSON si XML sau a matricelor php. Modelele simplifica manipularea si procesarea fluxului de lucru al matricelor JSON, XML sau php.
Pro
- Simplu pentru a incepe (aceasta pagina va va arata toate caracteristicile)
- Evitati indexul nedefinit prin design
- Acces dinamic la proprietatile modelului, deci nu este nevoie de maparea proprietatilor clasei cu atribute JSON sau XML
- Completarea automata IDE utilizand @property docblock si faceti ca utilizarea API-ului sa fie documentata in mod implicit
- Are multe si are o relatie intre modele
- Abilitatea de a atribui valori implicite pentru atribute astfel incat atributele nedefinite sa poata fi tratate in mod fiabil
- Abilitatea de a adauga logica in datele din model
- Transmiteti valori la tipuri cunoscute, cum ar fi intreg, sir, float, boolean
- Transmiteti valorile la obiectul Carbon pentru a lucra cu usurinta pe atributele de data
- Abilitatea de a implementa tipuri de distributie personalizate
- Manipulati si lucrati la modelele de obiecte in loc de matrice si faceti-le sa se matriceze sau sa serializeze inapoi la JSON
Instalare
compozitor necesita cangelis / data-models: ^ 2.0
Utilizare JSON
Imaginati-va ca aveti date JSON pentru o postare de blog care arata astfel
$ data = ‘{“id”: 1, “author”: “Can Gelis”, “created_at”: “2019-05-11 22:00:00”, “comments”: [{“id”: 1, ” text “:” Hello World! ” }, {“id”: 2, “text”: “Ce lume minunata!” }], “settings”: {“comments_enable”: 1}} ‘;
Puteti crea modelele arata astfel
utilizati CanGelis \ DataModels \ JsonModel; utilizati CanGelis \ DataModels \ Cast \ BooleanCast; utilizati CanGelis \ DataModels \ Cast \ DateTimeCast; / ** * Definiti docblock pentru completarea automata a ideilor * * @property bool $ comments_enable * / class Setari extinde JsonModel {protected $ casts = [‘comments_enable’ => BooleanCast :: class]; protejate $ implicite = [‘comments_enable’ => false]; } / ** * Definiti docblock pentru completarea automata ide * * @property integer $ id * @property string $ text * / class Comentariu extinde JsonModel {} / ** * Definiti docblock pentru completarea automata ide * * @property integer $ id * @property author $ text * @property Carbon \ Carbon $ created_at * @property Settings $ settings * @property CanGelis \ DataModels \ DataCollection $ comments * / class Post extinde JsonModel {protected $ defaults = [‘text’ => ‘Nu Text’]; $ distribuite protejate = [‘ created_at ‘=> DateTimeCast :: class]; protejat $ hasMany = [‘comments’ => Comentariu :: clasa]; protejat $ hasOne = [‘settings’ => Settings :: class]; }
Folositi modelele
$ post = Post :: fromString ($ data); // initializati din JSON String $ post = new Post (json_decode ($ data, true)); // sau utilizati matrici $ post-> text // „Fara text” in $ implicit $ post-> foo // returneaza nul care nu are valoarea implicita $ post-> created_at // obtineti obiectul Carbon $ post-> created_at -> addDay (1) // Accesati maine $ post-> created_at = Carbon :: now () // actualizati ora de creare $ post-> setari-> comments_enable // returneaza adevarat $ post-> settings-> comments_enable = false // manipulati obiectul $ post-> setari-> comments_enable // returneaza false $ post-> setari-> editable = false // introduceti un nou atribut $ post-> comments-> first () // returneaza primul comentariu $ post-> comentarii [1] // obtine al doilea comentariu pentru fiecare ($ post-> comentarii ca $ comentariu) {} // iterati pe comentarii $ post-> comentarii->
Utilizare XML
Este destul de simplu si foarte similar cu modelele JSON.
me follo a mi madrastra peliculas porno de incesto
compilacion mamadas orgias de maduros
follando a mi compañera de piso mi primera follada
videos porno online videos pornos muy guarros
viejas anales xxx orgias
transexual española follando porbo
trio con mi esposa españolas pajeandose
asiatica forzada sexo camara oculta españa
mamadas de polla hermanos jovenes follando
porno gay marruecos videos porno morbosos
porno gay primera vez videos de peliculas eroticas
porno espaniol trios con españolas
porno forzado porno bix
tias buenas desnudas hijas calientes
mi mujer es muy puta se follan a mi mujer
pormo zoofilia con abuelas
xxx incesto real viejas zoofilia
coños ricos pollas arabes
videos madres lesbianas tias follando con animales
fiestas porno tetonas delgadas
Imaginati-va o data XML:
$ data = ‘<Team Color = “# ffffff”> <Jucatori> <Jucator><Nume> Beckham</Nume><BirthDate>1975-05-02</BirthDate> </Player> <Jucator> <Nume> Zidane </Name><BirthDate>1972-06-23</BirthDate> </Player> </Players> <TeamLocation> <City> Istanbul </City> <Country> Turcia </Country> </TeamLocation> </ Team > ‘;
Puteti configura o relatie care arata astfel:
utilizati CanGelis \ DataModels \ XmlModel; utilizati CanGelis \ DataModels \ Cast \ DateCast; class Player extinde XmlModel {// numele etichetei radacina <Player> </Player> protected $ root = ‘Player’; protejate $ distribuie = [‘BirthDate’ => DateCast :: class]; } clasa Address extinde Xmlmodel {protected $ root = ‘Address’; } clasa Echipa extinde XmlModel {protected $ root = ‘Echipa’; protejat $ hasMany = [‘Jucatori’ => Jucator :: clasa]; protejat $ hasOne = [‘TeamLocation’ => Adresa :: clasa]; // atributele din aceasta matrice vor fi // se comporta ca atribute XML vezi exemplul protejat $ atribute = [‘Culoare’]; }
Odata ce ati configurat relatiile si datele dvs., incepeti sa utilizati datele.
$ team = Team :: fromString ($ data); echo $ team-> TeamLocation-> City; // returneaza Istanbul $ team-> TeamLocation-> City = ‘Madrid’; // actualizeaza orasul echo $ team-> Jucatori-> count (); // numarul de jucatori echo $ echipa-> Jucatori [0] -> Nume; // primeste numele primului jucator echo $ echipa-> Culoare; // primeste atributul Color XML $ team-> Color = ‘# 000000’; // actualizati atributul XML echo get_class ($ team-> Players [0] -> BirthDate); // returneaza echipa Carbon \ Carbon $-> Jucatori-> adauga (Jucator :: fromArray ([‘Name’ => ‘Ronaldinho’])); // adauga un nou jucator echo (sir) $ echipa; // realizeaza un sir XML
XML rezultat va fi;
<Team Color = “# 000000”> <TeamLocation> <Country> Turcia </Country> <City> Madrid </City> </TeamLocation> <Jucatori> <Player><Name> Beckham</Name> <BirthDate> 1975 -05-02 </BirthDate> </Player> <Player><Name>Zidane</Name><BirthDate>1972-06-23</BirthDate> </Player> <Player> <Name> Ronaldinho </Name> </Player> </Players> </Team>
Distributii disponibile
Iata distributiile disponibile.
CanGelis \ DataModels \ Cast \ BooleanCast CanGelis \ DataModels \ Cast \ FloatCast CanGelis \ DataModels \ Cast \ IntegerCast CanGelis \ DataModels \ Cast \ StringCast // acestea necesita pachetul nesbot / carbon pentru a functiona CanGelis \ DataModels \ Cast \ DateCast CanGelis \ \ DateTimeCast CanGelis \ DataModels \ Cast \ Iso8601Cast
Distributii personalizate
Daca preferati sa implementati o logica de distribuire a valorilor mai complexa, modelele de date va permit sa le implementati pe cele personalizate.
Imaginati-va ca utilizati Laravel Eloquent si doriti sa aruncati un atribut JSON.
// data = {“id”: 1, “user”: 1} clasa EloquentUserCast extinde AbstractCast {/ ** * Valoarea este aruncata cand este accesata * Deci acesta este un loc bun pentru a converti valoarea din * JSON in ce ne-ar placea sa vedem * * @param mixed $ value * * @return mixed * / public function cast ($ value) {if (! $ value instanceof User) {return User :: find ($ value); } returneaza valoarea $; } / ** * Aceasta metoda este apelata atunci cand obiectul este serializat inapoi la * array sau JSON * Deci acesta este un loc bun pentru a face valorile * json compatibile, cum ar fi intreg, sir sau bool * * @param mixed $ value * * @ returneaza mixt * / functie publica uncast ($ valoare) {if ($ valoare instanta a utilizatorului) {returneaza $ valoare-> id; } returneaza valoarea $; }} class Post {protected $ casts = [‘user’ => EloquentUserCast :: class]; } $ post-> utilizator = Utilizator :: gasi (2); // setati modelul Elocvent direct $ post-> utilizator = 2; // setati doar ID-ul in loc $ post-> utilizator // returneaza instanta utilizatorului $ post-> toArray () [‘id’ => 1, ‘user’ => 2]
Contributie
Simtiti-va liber sa contribuiti!