Korisni savjeti

Prvo upoznavanje s php funkcijama za početnike

Pin
Send
Share
Send
Send


Funkcija je samo blok koda koji ima naziv i ulazne parametre za obradu koji se mogu izvesti kad nam zatreba. Možda se čini da od njih ima malo smisla, ali, vjerujte mi, kad shvatite i naučite koristiti funkcije, možete uštedjeti puno vremena i napisati kôd koji će biti mnogo čitljiviji!

Iako se tema funkcija često shvaća kao komplicirana za početnike programere, svejedno ih morate znati. Možda će proći dosta vremena, ali ne odustajte, jer će vam funkcije uvelike pomoći u vašoj karijeri programiranja.

Kreirajte svoju prvu php funkciju

Kada kreirate funkciju, najprije joj morate dati ime, na primjer, myCompanyName. Najbolje je nazvati funkcije jasnim imenima koja će imati smisla kako se ne bi zbunili. Isto vrijedi i za varijable.

Sintaksa za stvaranje funkcije prilično je očita i logična. Prvo morate reći PHP-u da želite stvoriti funkciju. To se može postići unosom ključne riječi, imena vaše funkcije i nekim drugim stvarima (o kojima ćemo govoriti kasnije).

Evo kako izgleda deklaracija funkcije myCompanyName:

primjedba: Naziv funkcije može započeti znakom "_", ali ne brojem!
To je samo okvir naše funkcije, a unutar nje možemo staviti bilo koji kod koji želimo. Kada se funkcija nazove, bit će izvršena. Vidite u zagradama u gornjem primjeru "<>"? Ovi zagrade određuju gdje bi trebao biti naš funkcijski kod. Otvarajuća narukvica "<" govori PHP-u da kod funkcije funkcionira, a zatvarački krug ">" govori PHP-u da je naša funkcija gotova!

Dodajmo tome nešto jednostavno, poput odjeka.

To je sve, prilično jednostavno, zar ne? Sada naučite zvati našu funkciju.

Poziv funkcije php

Sad kad ste završili kodiranje najjednostavnije funkcije, vrijeme je da ga isprobate. Ispod je jednostavna skripta. Učinimo to: prijavite svoju funkciju i upotrijebimo je.

Iako je ovo bio jednostavan primjer, važno je razumjeti da svaka nepažnja može dovesti do pogreške. Kad stvorite funkciju, slijedite ove jednostavne smjernice.

  • Uvijek započnite svoje funkcije s ključnom riječju funkcija.
  • Zapamtite da vaš kôd funkcije mora biti između "<" i ">".
  • Kad nazovete funkciju, budite sigurni da ste pravilno napisali njeno ime.

Sintaksa funkcije u php-u

  • Definicija funkcije je sljedeća:

Parametri mogu biti prazni. Naziv je naznačen nakon potrebne funkcije riječi. Štoviše, nazivi funkcija ne razlikuju velika i mala slova.

To znači da se prilikom deklariranja funkcije Main () i function main () podrazumijeva ista funkcija. A kad jedan od njih bude pozvan, tumač će dati poruku o pogrešci:

  • Tijelo funkcije može sadržavati bilo koji kod. Uključujući definiciju druge funkcije. U ovom se slučaju definicija može nalaziti bilo gdje u kodu. U php, to znači samo mjesto poziva poziva funkcije,
  • Funkcija može vratiti samo jednu vrijednost ili ništa. Vraćanje više od jedne vrijednosti nije moguće. U tom slučaju vrsta povratne vrijednosti može biti bilo koja.

Kao rezultat toga, 1 će biti vraćen.

Višestruki prijenos vrijednosti može se obaviti pomoću php polja u funkciji.
Primjer:

Vrijednosti varijabli x i y postavljene su u tijelu funkcije. Zatim se pomoću funkcije ugrađene array () zapisuju u niz.

Vrijednost elemenata niza postavlja se kada se funkcija poziva pomoću liste ().

  • Poziv funkcije php ima sintaksu:

Funkcija će se vratiti 3.

Funkcije s parametrima

Još jedna korisna značajka je da možete pozivati ​​funkcije s parametrima, odnosno proslijediti dodatne informacije u njen kod. Naša prva funkcija myCompanyName nije baš korisna, jer sve što možemo je ispisati istu liniju.

Međutim, ako bismo koristili parametre, tada bismo mogli dodati neke dodatne čipove u našu funkciju! Parametar se pojavljuje u zagradama "()" i izgleda kao uobičajena PHP varijabla. Stvorimo novu funkciju koja stvara prilagođeni pozdrav na temelju imena osobe, koji ćemo proslijediti kao parametar.

Sad kad nazovemo sayHello funkciju, moramo u zagradama navesti parametar (ime), jer je funkcija deklarirana s parametrom i ne može se zanemariti.
Ako želimo odrediti nekoliko parametara, jednostavno ih navodimo prilikom deklariranja funkcije, odvojene zarezima, i to je sve, ništa drugo nije potrebno.

Anonimne funkcije u php-u

Anonimne funkcije u php-u pojavile su se nedavno, počevši od verzije 5.3. U starijim verzijama jezika njihova podrška nije implementirana.

Razmotrite sljedeće primjere:

Ovdje je referenca na anonimnu funkciju dodijeljena varijabli func1. Tada se varijabla x inicijalizira sa vrijednošću func1 i emitira se pomoću echo ():

U primjeru, funkcija autonomne funkcije ($ v) <return $ v> 2,> poziva se izravno na mjestu definiranja. Prenosi se kao drugi argument standardnoj funkciji array_filter ().

Povratna vrijednost funkcije php

Pored činjenice da imate mogućnost prosljeđivanja podataka na funkciju, ona može i sama vratiti vrijednost. Ali zapamtite, funkcija može vratiti samo jednu vrijednost, iako ona može biti bilo što: cijeli broj, stvarna, logička vrijednost, po želji!

Kako vraća vrijednost? Najbolje je razumjeti primjer. Deklariramo funkciju s parametrima, a rezultat dodijelimo nekoj varijabli, poput ove:

Da dodijelite vrijednost funkciji - njoj se dodaje izjava za povratak, vidite? Rezultat dodavanja dva broja pohranjuje se u varijablu $ total, a koristeći return $ total ta se vrijednost prosljeđuje u samu funkciju. Zatim ga jednostavno dodijelimo varijabli $ myNumber nakon poziva funkcije mySum s dva parametra 3 i 4 (ovo su brojevi koje treba dodati).

Vježbajte, razumijejte i uspjet ćete!

Funkcija pošte ()

Skup standardnih (ugrađenih) funkcija u php-u prilično je širok. Mnogi od njih implementiraju osnovne mogućnosti web sfere.

Jedna od njih je i pošta () funkcija. Ona šalje poruku na navedeni poštanski pretinac. Njegova je sintaksa:

Opis prihvaćenih parametara:

  • na - adresu primatelja pisma. Mora biti u skladu sa standardom [email protected],
  • predmet - predmet pisma,
  • poruka - poruka koju treba poslati. Štoviše, svaki redak poruke trebao bi sadržavati najviše 70 znakova. Linije su odvojene znakom nove linije (n).

Ako se poruka šalje izravno na SMTP poslužitelj sa Windows računala, tada će se izbrisati sve točke na kraju svakog retka. Da biste to izbjegli, zamijenite sve pojedinačne točke dvostrukim točkama pomoću koda:

Neobvezni parametri funkcije pošte ():

  • Additional_headers - umetnute na kraju zaglavlja poslane poruke. Koristi se za dodavanje naslova.

Primjer slanja jednostavnog pisma:

Evo primjera potpuno radnog obrasca za slanje poruka:

Nekoliko glavnih razloga zbog kojih pismo nije poslano:

  • Pismo ne sadrži dodatno From zaglavlje. Postavlja se pomoću neobaveznog parametra Additional_headers. Može se i prema zadanim postavkama isključiti u datoteci konfiguracije php.ini. Ako zaglavlje nije u kodu, tumač će prikazati sljedeću poruku:

  • Koristite samo LF (n). Neki agenti utemeljeni na Unixu automatski zamjenjuju LF s CRLF (rn),
  • Kada implementirate funkciju mail () u Windows, adresa primatelja ne smije biti ovog oblika: Nešto [email protected]

Neprikladna interpretacija parametra može se dogoditi prilikom njegovog slanja agentu za poštu radi slanja.

  • Neuspjeh u slanju pisama može se pojaviti prilikom postavljanja poziva () poziva u tijelo petlje. Funkcija otvara i zatvara vezu s SMTP poslužiteljem nakon slanja svakog pisma.

Pregled standardnih php funkcija

Standardni skup php uključuje veliki skup funkcija za rad sa žicama. Detaljno razmotrimo nekoliko njih:

  • 1) substr () - vraća dio niza. Sintaksa: string substr (string string, int start [, int length]), gdje:
  • string string - zadani niz.
  • int start - postavlja početak podstrane.
  • int length - broj znakova u vraćenom nizu.

  • 2) strpos () - vraća položaj podstline u zadanom nizu. Pomoću neobaveznog parametra možete odrediti referentnu točku za pretraživanje. Sintaksa: string strpos (niz sijena, niz igla [, int offset])

3) strstr () - vraća podstvor iz niza, počevši od specificiranog znaka. Sintaksa: niz
strstr (konop za mrežu, string igla)

1. count () - vraća broj elemenata u nizu. Sintaksa: int count (miješani var)

2. resetiraj () - postavlja pokazivač matice na prvi element, vraća mu vrijednost.
Sintaksa: resetiranje (niz polja)
Primjer:

3. sort () - sortira niz uzlaznim redoslijedom. Funkcija bilo koji niz tretira kao popis. Sintaksa: vrsta void (array array [, int sort_flags])

Za više informacija o svim prihvaćenim vrijednostima argumenata funkcije pogledajte dokumentaciju za php.

1. bindec () - pretvara binarni broj u decimalni. Sintaksa: bindec (string $ binary_string)

2. kat () - zaokružuje broj na manji. Sintaksa: plutajući pod (float $ value)

3. rand () - generira slučajni broj iz navedenog raspona. Sintaksa: int rand (int $ min, int $ max)

Prilagođene funkcije: pisanje svoje prve funkcije

Razmišljam o tome koje su funkcije i gdje pronaći gotove, objasnio sam. No, najslađe je što sami možete definirati funkcije! Općenito, definicija bilo koje funkcije je sljedeća:

Funkcija mora imati ime. Sve funkcije moraju imati različita imena, a naziv vaše funkcije ne može se pozvati na isti način kao funkcija ugrađena u PHP, Može postojati bilo koji broj argumenata, uključujući 0. Funkcija može nešto vratiti; za to je riječ napisana prije rezultata povratak, Nakon toga, funkcija prekida svoj rad. Ili se možda neće vratiti, ali, na primjer, promijeniti svoje argumente ili prikazati informacije na zaslonu. Funkcije su imenovane na isti način kao i varijable - camelCase. O tome sam više pisao ovdje - https://webshake.ru/post/726. Morate ih imenovati jednako značajno - ono što funkcija radi jest pisanje u imenu.

Pogledajmo primjer stvaranja jednostavne funkcije u PHP-u. Neka uzmu dva broja kao ulaz i vratite njihov zbroj.

Ok, napisali smo funkciju, sada je možete nazvati i pogledati rezultat njenog rada.

Kao što vidimo, funkcija je uspješno funkcionirala. Dakle, napisavši to samo jednom, možemo mu prenijeti različite argumente i dobiti različite vrijednosti. Funkciju možete koristiti samo nakon koda za njezinu definiciju!

opsega

Razgovarajmo sada o opsegu funkcija. Ovdje je, zapravo, sve jednostavno i sve se svodi na to varijable unutar funkcije nisu dostupne izvana i nazivaju se lokalne, Nakon dovršetka funkcije, sve varijable koje su unutar nje deklarisane prestat će postojati. U isto vrijeme varijable izvan funkcije nazivaju se globalne i nisu dostupne unutar funkcije, Dakle, moguće je koristiti iste nazive varijabli unutar funkcije kao i izvan, ali istodobno će to biti potpuno različite varijable.

Ovaj kôd apsolutno radi. Evo varijabli $ x i $ y unutarnja funkcija getSum žive sami od sebe, a varijable s istim imenima izvan funkcije odvojene su i ne znaju ništa jedna o drugoj. Kada se funkcija pozove, vrijednost prenesenog argumenta kopirat će se u lokalnu varijablu, a nakon izlaska iz funkcije ta će se vrijednost izbrisati. Odnosno, ovdje kod poziva getSum samo kopiramo vrijednosti 3 i 5 u lokalne varijable $ x i $ y, Od ovog trenutka vanjske varijable prestaju postojati unutar funkcije, a ona zna samo za njene varijable.

Prosljeđivanje parametara po referenci

Međutim, argument možete proslijediti referencom. To se vrši pomoću znaka & prije naziva argumenta.

U ovom se slučaju vrijednost ne kopira u lokalnu varijablu. Pojavljuje se još jedna veza iste vrijednosti, ali s drugim nazivom. A sada, mijenjajući vrijednost ove varijable unutar funkcije, promijenit ćemo izvornu, prenesenu vrijednost. Pogledajmo primjer prenošenja vrijednosti referencom.

Odnosno, za vrijednost varijable $ a unutar funkcije se pojavilo još jedno ime - $ x, Sada oba ova imena upućuju na isto značenje. A ako promijenimo vrijednost varijable unutar funkcije, onda će se ona mijenjati i izvan!

A ako smo varijablu proslijedili funkciji po vrijednosti, bez korištenja znaka &tada biste postigli drugačiji rezultat.

Ovdje, kad zovete funkciju vrijednost varijable $ a jednostavno je kopirana do lokalne varijable $ x, Unutar funkcije koju smo promijenili $ xdodajući mu broj 5i tada je funkcija dovršena. Lokalna varijabla $ x prestao je postojati, ali nismo utjecali na varijablu $ a.

Funkcije u kojima se svi argumenti prenose po vrijednosti nazivaju se čistima. Vrijedno ih je koristiti ako je moguće, jer u ogromnoj većini slučajeva prijenos vrijednosti vezama nije potreban i dovodi do zapletanja koda.

Početak s nagovještavanjem tipa u PHP 7

U PHP 7 sada funkcije pružaju mogućnost određivanja vrsta argumenata, uključujući za skalarne tipove (žice, brojeve). U ovom slučaju će se, prilikom prijenosa argumenta u funkciju, prenesena vrijednost automatski prebaciti na željenu vrstu. Prepišemo našu funkciju, s obzirom na trenutne značajke PHP-a 7.

Dakle, sada kada se neke funkcije prenesu na neku funkciju, one će se automatski pretvoriti u brojeve. Provjerimo - umetnite poziv funkcije var_dump unutar naše funkcije i pogledajte što se događa.

Sasvim očekivano, kažete. Uostalom, u funkciju smo prenijeli cjelobrojne brojeve, pa čak i ako argumenti ne bi imali pretvorbe tipa, tada bi na isti način postojali cijeli brojevi. I bit ćete u pravu. Ali pokušajmo navesti broj s pomičnom točkom kao jedan od argumenata.

Nakon izvršenja vidjet ćemo sljedeće:

To je u trenutku kada je argument stigao u funkciju, već je bio pravi tip, Pokušajmo ukloniti indikaciju vrste iz argumenta:

Sada se decimalni broj neće staviti na cijeli broj, a dobit ćemo još jedan rezultat:

U ovom tečaju uvijek ćemo koristiti notaciju tipa. To pomaže u pisanju strožeg koda i omogućuje manje pogrešaka. Sami prosudite - ako radimo s određenom vrstom, sigurniji smo u funkcioniranje ovog ili tog koda.

Snažno kucanje

Kao što sam rekao, zadana vrijednost argumenta bit će automatski dodijeljena navedenom tipu. Međutim, u PHP-u je moguće izričito navesti da će argument poslan u funkciju imati određenu vrstu. To se vrši pomoću direktive:

Označeno je na početku PHP datoteke. Naš kod će imati sljedeći oblik:

U ovom slučaju, ako ga pokrenete sada, pogreška s tipom TypeError.

Kao što je ovdje napisano, prvi argument je prešao na getSum () mora biti tipa broj, ali proslijeđeno s tipom plovak, Ovo je snažno tipkanje u PHP-u. Nećemo ga koristiti u okviru ovog tečaja, a oni to funkcionalnost još nisu iskoristili u profesionalnom razvoju u PHP-u. Ali nisam mogao da kažem o njoj, sasvim je moguće da bi to mogli pitati tijekom razgovora za posao. Sada uklonite liniju _declare (strogovrste = 1), iz našeg koda i krenite dalje.

Funkcije bez argumenata

Kao što rekoh, funkcija možda uopće nema argumente. Takva je, na primjer, standardna funkcija rand () - samo vraća slučajni broj.

Pokušajmo u akciji:

Ponovimo isti kod:

Djeluje. A sad napišemo vlastitu funkciju koja također ne uzima argumente i vraća sinus slučajnog broja:

Funkcija unutar funkcije

Pogledajmo sada što nam još omogućuje obavljanje funkcija. Funkcije u PHP-u mogu se pozvati unutar ostalih funkcija. Navedimo apsolutno jednostavan primjer. Na primjer, trebamo pronaći zbroj kosinusa od dva broja. Za to pišemo funkciju:

Ovdje smo koristili funkciju cos () iz standardne knjižnice unutar vlastite funkcije. Je li moguće pozvati vlastite funkcije s drugih funkcija? Da lako!

Ovdje smo definirali 2 različite funkcije, a u drugoj smo počeli koristiti prvu. Naravno, ti su primjeri prilično umjetni. I možda mislite da je ovdje upotreba funkcija nepotrebna. Uostalom, ovaj kôd možete jednostavno zamijeniti sljedećim izrazom:

I bit ćete apsolutno u pravu. Ali dajem namjerno takve jednostavne primjere, kako bi vam bilo lakše razumjeti općenito pisanje funkcija. Pogledajmo realniji primjer. Napisat ćemo funkciju koja će vratiti veći od dva prenesena broja.

Kôd ove funkcije može se pojednostaviti, jer ako $ x nema više $ y, u svakom slučaju ćemo izvršiti povrat $ y, Stoga možete ukloniti blok drugo:

Rezultat će biti isti. To se događa, kao što rekoh, da čim se funkcija izvrši povratak, vrijednost će se vratiti odmah, a funkcija će dovršiti svoj rad.

Prenosimo prvi argument većem broju:

Prvi je uvjet bio ispunjen i pozvan vratiti $ x, Sve gore vratiti $ y posao nije dosegao.
Pojednostavljenje je da što je manje koda gniježđenja, lakše je čitati i razumjeti. Pogledajte koliko se čvrsto proučava sav proučeni materijal? U ovom slučaju, u skladu s uvjetima u PHP-u.

Rekurzivne funkcije

Oh, sad mi je zabavno. Oprez! Ako vam tijekom čitanja ovog odjeljka mozak počne kihati, prijeđite na sljedeću lekciju, rekurzija se također može savladati na kraju tečaja. Ne brinite, općenito, ako vam to ne uspije, niste sami =)

Tako smo saznali da jednu funkciju možete nazvati unutar druge. Međutim, postoje situacije kada to trebate pozvati istu funkciju u sebi.

Na primjer, moramo povećati broj na snagu. Pretpostavimo da za to imamo određenu funkciju. Nazovimo je snaga, I neka ona uzme 2 argumenta:

  • broj koji treba podići
  • степень, в которую нужно возвести.

То есть, для того, чтобы возвести число 2 в третью степень, нам нужно вызвать эту функцию следующим образом:

Согласитесь, что power(2, 3) равносильно 2 * power(2, 3 - 1), То есть мы можем умножить число, возводимое в степень, на вызов этой функции, и уменьшить при этом степень на единицу.

Таким образом, получается, что мы можем вызывать эту же функцию с некоторыми дополнительными операциями.

Тогда для возведения 2 в степень 3 получим:

  1. power(2, 3) = 2 * power(2, 2)
  2. power(2, 2) = 2 * power(2, 1)
  3. power(2, 1) = 2

Число в первой степени равно самому этому числу. Здесь нам нужно остановиться.

Давайте реализуем это с помощью кода:

Da, funkcija će se sama pozivati. Dakle, možemo doći do zaključka da se rekurzija korisna pri izračunavanju funkcije može svesti na njen jednostavniji poziv, pa čak i na jednostavniji i tako dalje, sve dok ne postignemo neku konačnu vrijednost u argumentima (u našem primjeru - brojevi 1). Da biste shvatili kako sve funkcionira korak po korak, možete dodati poziv var_dump na početku funkcije i pogledajte koji se argumenti na nju prenose u svakom koraku.

Zaključak je sljedeći:

Tako vidimo da se funkcija tri puta pozvala i vidimo koje su vrijednosti argumenata bile na svakom pozivu. Nadam se da je ovdje sve jasno. Ako ne (a kad se učenje rekurzije to događa prilično često) - upišite svoja pitanja u komentarima, pomoći ću vam. A možete i korak po korak analizirati tijek programa na komadu papira - to također često pomaže.

Pogledajmo još jedan primjer rekurzije za pojačanje. Na primjer, proslijedit ćemo neki broj funkciji $ n, a ona će razmotriti zbroj svih brojeva od jedan do ovog broja. Nazovite ovu funkciju getSumOfNumbersFromZero ($ n).

Pretpostavimo da moramo izračunati zbroj svih brojeva iz 1 u 5, Tada će poziv funkcije biti sljedeći:

Kao što možda pogađate, ovaj se izazov može zamisliti kao

Ili u općem slučaju

I tako sve dok $ n neće biti jednaki 1.

Uvedimo to s rekurzivnom funkcijom:

Tako je! Pa, dosta rekurzije, inače već čujem mozak kako ključa.
Zaista se nadam da ste uživali na udžbeniku. Ako je tako, bit će mi drago ako ga podijelite na društvenim mrežama ili to kažete svojim prijateljima. Ovo je najbolja podrška projektu. Hvala onima koji to rade. Ako imate bilo kakvih pitanja ili komentara - napišite o tome u komentarima. A sada - radimo domaću zadaću, svoje odluke možete pisati u komentarima, ja ću ih provjeriti i reći je li sve točno. Žao svima!

Pogledajte video: PHP za Web Dizajnere - #1 - Varijable (Listopad 2020).

Pin
Send
Share
Send
Send