Dacă ați analizat codurile oricăror programe scrise în limbajul php, atunci, cu siguranță, ați dat peste astfel de coduri speciale în cod. personaje:

-> (liniuță și semnul mai mare decât)

:: (colon dublu)

De exemplu, constructele cu aceste expresii ar putea arăta astfel:

Salut::hello_world(); q -> hello_world();

Pentru a înțelege pentru ce sunt aceste constructe, să ne uităm la cel mai simplu exemplu. Să presupunem că avem un program simplu „Hello world!”.

Să creăm un fișier php simplu și să scriem următorul cod în el:

Clasa Hello (funcția hello_world () ( ecou „Hello world”; ) )

Acum gândiți-vă cum puteți executa funcția hello_world().

Dacă funcția hello_world() nu ar fi în clasa Hello, atunci am numi-o foarte simplu:

Salut Lume();

Ca urmare, am avea pe ecran inscripția „Hello world”. Dar, cel mai probabil, dacă ați încercat să rezolvați problema în acest fel, ați primit o eroare pe ecran:

Eroare fatală: Apel la funcția nedefinită hello_world() în …/test.php on line…

Totul este corect, pentru că funcția este în clasă, atunci trebuie să spuneți computerului că trebuie căutată în clasa Hello. Dacă acest lucru nu se face, atunci nimic nu va funcționa.

Cum pot fi comunicate astfel de informații unui computer?

Există mai multe opțiuni aici. Să ne uităm la fiecare separat.

1 opțiune. Prin crearea unei instanțe a clasei.

$q = nou Bună ziua;

Cu această linie, creăm o așa-numită instanță a clasei Hello. După această operație, putem accesa liber funcția de care avem nevoie prin această instanță, care în acest caz este stocată în variabila $q.

$q -> hello_world();

Construcția „->” devine legătura de legătură între instanța clasei și funcție.

Acum totul funcționează. Ura! Ar trebui să vedeți „Hello world” pe ecran.

Opțiunea 2. Folosind constructul două puncte:

Această opțiune este mult mai ușoară. Nici măcar nu trebuie să creați nicio instanță aici. Noi doar scriem.

Salut::hello_world();

Puteți verifica dacă funcția se va finaliza cu succes.

Sper că după ce ați citit această notă, acum înțelegeți că „->” și ​​„::” sunt folosite pentru a accesa funcția dorită în clasa generată.

Cu ajutorul acelorași construcții, putem accesa variabile care sunt în clase. Singura diferență este că nu trebuie să puneți paranteze la sfârșit. De exemplu:

Salut Lume;

Cu acest construct, ne referim la variabila lume, care se află în clasa Hello.

Mai ales adesea, astfel de construcții pot fi găsite atunci când se analizează codul diferitelor sisteme de management al șantierului. Uită-te la codul sursă al unor sisteme precum Joomla, WordPress etc. Acum știi pentru ce sunt toate acestea.

Mai multe dintre tutorialele mele PHP pentru începători.

În plus față de răspunsurile referitoare la utilizarea de către PHP a două puncte ca „operator de rezoluție a domeniului”:

În plus, se folosește un dublu două puncte:

    Pentru a converti un nume de clasă necalificat, calificat sau alias în forma sa complet calificată și

    Pentru a apela o metodă de clasă __callStatic.

Pentru a converti numele unei clase în forma sa complet calificată, adăugând „::class”

Două două puncte urmate de cuvântul cheie „clasă” după numele clasei furnizează Numele complet din această clasă ca șir. Adică, „ClassName::class” este convertit în numele complet calificat „ClassName”. Vezi (A) Manual: Clase și obiecte: Elemente fundamentale, (B) Manual: Clase și obiecte: Constante de clasă și (C) Manual: Referință pentru limbaj: Constante

Sintaxa „::class” este utilă într-un spațiu de nume pentru a obține numele complet calificat al unei clase din forma sa necalificată sau calificată sau dintr-un alias al numelui său.

Sintaxa „::class” pare să funcționeze pentru rezolvarea numelor de interfețe, precum și a numelor de clasă, deși acest lucru nu pare să fie documentat de sursele citate mai sus.

În cadrul unei clase, sintaxa funcționează și cu „self::class” așa cum este menționat în RFC „::class” de mai sus.

Câteva exemple:

fullName(), PHP_EOL; // iese: MyNamspace\TheirClass

Pentru a apela „__callStatic”

Două două puncte pot fi folosite pentru a „invoca” un nume de metodă statică pe care clasa nu l-a declarat. Aceasta apelează metoda clasei „__callStatic” dacă a declarat una. Metoda __callStatic poate alege apoi „dinamic” cum să gestioneze apelul. În PHP aceasta se numește „supraîncărcare” cu „metoda magică” __callStatic .

handleOrder($argumente); ) returnează „Îmi pare rău, nu te putem ajuta cu „ . lcfirst($item) . „.”; ) ) namespace OurCompany\Specialists; class Car ( funcția publică handleOrder($arguments) ( return „Pot să te ajut cu o mașină cu $arguments?”; ) ) class Truck ( funcția publică handleOrder($arguments) ( return „Pot să te ajut cu un camion $arguments? "; ) ) utilizați Compania Noastră\Comenzi\Intake; echo Intake::orderCar(„roșu”), PHP_EOL; // ieșiri: Pot să vă ajut cu o mașină roșie? echo Intake::orderTruck("pickup"), PHP_EOL; // ieșiri: Pot să vă ajut cu o camionetă? echo Intake::orderShoes("suede"), PHP_EOL; // iese: „Îmi pare rău, nu vă putem ajuta cu pantofi.

Poate ați observat cât de des folosesc aceste două pseudo-elemente în tutorialele mele. De ce îmi plac mie? Pentru că sunt atât de convenabile de utilizat, încât nici măcar nu trebuie să adăugați elemente HTML suplimentare. Cu toate acestea, acest articol nu este despre beneficiile pseudo-elementelor.

Acest articol este dedicat clarificării odată pentru totdeauna neînțelegerilor referitoare la sintaxa pseudo-elementelor.

Pseudo ce?

Pseudo-elementele sunt numite așa deoarece nu sunt elemente HTML reale. De exemplu, în HTML nu există etichete înainte și după, dar în CSS puteți aplica stiluri elementelor :before și :after.

Unul sau două două puncte?

Nu există nicio diferență între :before și::before sau între :after și::after. Sintaxa cu două două puncte este specifică CSS3.

http://www.w3.org/TR/css3-selectors/#pseudo-elements are acest paragraf:

Acest semn (::) este introdus pentru a distinge pseudo-clase de pseudo-elemente. Pentru compatibilitate cu foile de stil preexistente, pseudoelementele din CSS 1 și 2 pot fi specificate și cu un singur două puncte (în special, :first-line, :first-letter, :before și :after).

Rezumând

IE 7 și versiunile anterioare nu acceptă pseudo-elementele enumerate. Dar IE 8 o face, și acesta este un motiv bun (și singurul) pentru a utiliza sintaxa cu un singur punct.

Important!

Vă rugăm să rețineți că toată această discuție despre unul sau două două puncte este doar despre pseudo-elemente, nu despre pseudo-clase.

Cum scrii?

Scrieți în comentarii despre ce sintaxă utilizați și din ce motive.

Deci, două puncte sunt un separator de punctuație. Spre deosebire de punct, semne de exclamare și întrebare și elipse, nu are o funcție de separare, adică nu separă propozițiile din text unele de altele. Colonelele sunt plasate numai în interiorul propoziției și, prin urmare, indică faptul că după aceasta afirmația va fi continuată.

Coloana poate fi găsită în propoziții simple și complexe. Într-o propoziție simplă, separă și evidențiază părți ale enunțului; în una complexă, joacă și un rol semantic: indică relațiile semantice dintre părțile unei propoziții complexe neasociate.

Deci, care este modalitatea corectă de a folosi un colon fără a face greșeli și a nu-l confunda cu alții? Să ne uităm la cazurile principale.

Colon într-o propoziție simplă

Regula 1. Colon într-o propoziție cu membri omogene

Dacă cuvântul de generalizare este în fața membrilor omogene, atunci este nevoie de două puncte după el, de exemplu: zăpadă pretutindeni: pe acoperișurile caselor, pe garduri, pe gazon, pe mașini.

În această propoziție, cuvântul pretutindeni rezumă o serie de circumstanțe similare. Cuvântul generalizant este situat înaintea membrilor omogene și, prin urmare, există două puncte după el.

Regula 2. Coloana în propoziții cu cuvinte calificative

La generalizarea cuvintelor dintr-o propoziție, pot fi folosite cuvinte de calificare: ca de exemplu, de exemplu, așa cum, și anume, precedat de virgulă și urmat de două puncte. De exemplu: zăpadă pretutindeni, și anume: pe acoperișurile caselor, pe garduri, pe gazon, pe mașini.

În această propoziție, împreună cu cuvântul generalizator pretutindeni a folosit un rafinament al construcției sale "și anume" , urmată de o serie de membri omogene, deci este urmată de două puncte.

Regula 3. Colon în construcții cu vorbire directă

Dacă discursul direct urmează cuvintele autorului, atunci se pun două puncte înaintea acestuia, iar discursul direct în sine este cuprins între ghilimele, iar primul cuvânt al vorbirii directe este scris cu majuscule: Profesorul a spus: „Bună, copii!”. De asemenea, dacă vorbirea directă rupe cuvintele autorului din text, atunci se pun două puncte în fața acestuia, de exemplu: Zicând: „Bună, copii!”, profesorul a intrat în clasă. O virgulă trebuie pusă după vorbirea directă.

Colon în propoziție compusă

Regula 4. Se pot pune două puncte între părțile unei propoziții complexe fără uniuni (BSP) în următoarele cazuri.

  • A doua parte a BSP explică ce s-a spus în prima (între părțile de propoziție puteți introduce „ și anume"), de exemplu: Există un astfel de semn printre oameni: rândunelele zboară jos până la ploaie; Katya scrie foarte competent: nu greșește niciodată în cuvinte, pune corect semnele de punctuație.În aceste propoziții complexe non-uniune, în partea a doua, se dă o explicație a ceea ce se discută în prima. Între părți de propoziție puteți introduce „ și anume": Există o vorbă printre oameni (și anume): rândunelele zboară jos deasupra apei pentru a ploua. Prin urmare, în propozițiile de mai sus, se folosesc două puncte.

  • A doua parte a BSP dezvăluie motivul ce s-a spus în prima (pot fi introduse conjuncții între părțile de propoziție: pentru că, pentru că), de exemplu: Katya scrie foarte competent: citește mult, învață poezie pe de rost, își antrenează memoria; În curând va ploua: rândunelele zboară jos deasupra apei.În aceste BSP-uri, partea a doua fundamentează, indică motivul celor spuse în prima. Imbinarile pot fi introduse intre piese: pentru că, pentru că. O să plouă în curând (deoarece): rândunelele zboară jos deasupra apei. Prin urmare, în astfel de propoziții, se folosesc două puncte.

  • A doua parte a BSP completează, dezvăluie ce s-a spus în prima (astfel de propoziții sunt sinonime cu propoziții complexe cu o propoziție explicativă, deci se poate introduce o uniune între părți ale BSP ce). De exemplu: Katya știe: citirea cărților nu este doar interesantă, ci și foarte utilă pentru studiu; Oamenii spun: rândunelele zboară jos deasupra apei pentru a ploua.În datele BSP din a doua parte, este dezvăluit sensul a ceea ce este discutat în prima parte. Dacă părțile unei astfel de propoziții sunt legate printr-o uniune ce, apoi obțineți o propoziție complexă cu o propoziție explicativă: spun oamenii (ce,): rândunelele zboară jos deasupra apei pentru a ploua.În propozițiile de acest tip, se folosesc două puncte.

  • În prima parte a propoziției, verbele sunt omise: și am văzut și auzit și simțit, de exemplu: Am ridicat capul: o rază de soare a străbătut norii, luminând luminișul cu o lumină puternică; Se întoarse: ecoul pașilor grăbiți se auzea foarte aproape. Aceste propoziții sunt, de asemenea, sinonime cu o propoziție subordonată complexă cu o propoziție explicativă; verbele de tipul sunt omise în prima parte: și am văzut și auzitîmbinarea poate fi introdusă între piese ce. am ridicat capul (si am vazut asta): o rază de soare a străbătut norii, luminând luminișul cu lumină puternică.


Colon vs liniuță

Principala dificultate în utilizarea două puncte este că uneori este ușor să confundați acest semn de punctuație cu altul - o liniuță. Recent, aceste semne sunt adesea folosite în paralel, adică în aceleași cazuri pot fi plasate atât o liniuță, cât și un colon. De exemplu: Iar arbitrii au decis: dacă plouă, concursul va fi anulat; Am observat prima piatră, m-am hotărât - aici este o comoară, am început să mă uit(Tendryakov), Bineînțeles că elschimbat(: –) cocoșat, cenușiu, șifonatîn colțurile gurii; eu intru(: ) totul este liniștit; Nu rosti aceste cuvinte în fața lui(: ) poate fi jignit; Toată lumea era interesată de o singură întrebare(: ) cum să ieși din situație cât mai curând posibil; Însemna un singur lucru(: ) trebuie să se despart.

Astfel de opțiuni sunt considerate egale, puteți folosi atât o liniuță, cât și un colon fără teama de a face o greșeală. Cu toate acestea, trebuie amintit că liniuța, pe lângă funcțiile sintactice, îndeplinește și cele emoționale și expresive, adică indică emoționalitatea enunțului, subliniază expresivitatea acesteia. Prin urmare, dacă propoziția nu poartă astfel de semnificații, este neutră, trebuie să evitați utilizarea liniuței și să puneți două puncte, urmând regulile pe care le-am luat în considerare.