Ko PHP nozīmē divi koli? Kols: kur, kad un kāpēc jāliek kols Kā rakstāt.

Ja esat analizējis kādu PHP rakstītu programmu kodus, tad, iespējams, esat saskāries ar šādām īpašām lietām kodā. rakstzīmes:

-> (domuzīme un zīme lielāka par)

:: (Dubultā kola)

Piemēram, konstrukcijas ar šīm izteiksmēm var izskatīties šādi:

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

Lai saprastu, kāpēc šīs struktūras ir vajadzīgas, apskatīsim vienkāršāko piemēru. Pieņemsim, ka mums ir vienkārša programma "Sveika pasaule!".

Izveidosim vienkāršu php failu un ierakstīsim tajā šādu kodu:

Class Hello ( funkcija hello_world () ( atbalss "Sveika pasaule"; ) )

Tagad padomājiet par to, kā jūs varat izpildīt funkciju hello_world().

Ja funkcija hello_world() nebūtu klasē Hello, mēs to izsauktu ļoti vienkārši:

Sveika pasaule();

Tā rezultātā ekrānā tiktu parādīti vārdi “Sveika pasaule”. Bet visticamāk, ja mēģinājāt atrisināt problēmu šādā veidā, ekrānā tika parādīta kļūda:

Fatāla kļūda: izsaukums uz nedefinētu funkciju hello_world() failā …/test.php tiešsaistē…

Viss ir pareizi, jo funkcija ir klasē, tad jāpasaka datoram, ka tas jāmeklē Hello klasē. Ja jūs to nedarīsiet, nekas nedarbosies.

Kā šādu informāciju var nodot datoram?

Šeit ir vairākas iespējas. Apskatīsim katru atsevišķi.

1. iespēja. Izveidojot klases gadījumu.

$q = jauns Sveiki;

Ar šo rindiņu mēs izveidojam tā saukto Hello klases instanci. Pēc šīs darbības mēs varam brīvi piekļūt vajadzīgajai funkcijai, izmantojot šo gadījumu, kas šajā gadījumā tiek saglabāta mainīgajā $q.

$q -> hello_world();

Konstrukcija “->” kļūst par saikni starp klases gadījumu un funkciju.

Tagad viss darbojas. Urrā! Ekrānā vajadzētu parādīties "Hello World".

2. iespēja. Izmantojot dubultās resnās zarnas konstrukciju:

Šī opcija ir vēl vienkāršāka. Šeit pat nav jāizveido gadījumi. Mēs tikai rakstām.

Sveiki::hello_world();

Varat pārbaudīt, vai funkcija tiks veiksmīgi izpildīta.

Es ceru, ka pēc šīs piezīmes izlasīšanas jūs tagad saprotat, ka “->” un “::” tiek izmantoti, lai piekļūtu vajadzīgajai funkcijai izveidotajā klasē.

Izmantojot tās pašas konstrukcijas, mēs varam piekļūt mainīgajiem, kas atrodas klasēs. Vienīgā atšķirība ir tā, ka beigās nav jāliek iekavas. Piemēram:

Sveika pasaule;

Ar šo konstrukciju mēs piekļūstam pasaules mainīgajam, kas atrodas Hello klasē.

Īpaši bieži šādas konstrukcijas var atrast, analizējot dažādu vietņu pārvaldības sistēmu kodu. Apskatiet tādu sistēmu pirmkodu kā Joomla, WordPress utt. Tagad jūs zināt, kam tas viss ir paredzēts.

Vairāk manu PHP pamācību iesācējiem.

Tātad kols ir pieturzīme. Atšķirībā no punkta, izsaukuma un jautājuma zīmēm un elipses, tam nav atdalošās funkcijas, tas ir, tas neatdala teikumus tekstā vienu no otra. Kols tiek ievietots tikai teikumā un tāpēc norāda, ka paziņojums tiks turpināts pēc tā.

Kolus var atrast vienkāršos un sarežģītos teikumos. Vienkāršā teikumā tas sadala un izceļ paziņojuma daļas, sarežģītā teikumā tam ir arī semantiska loma: tas norāda uz semantiskajām attiecībām starp nesavienojuma kompleksa teikuma daļām.

Tātad, kā pareizi lietot kolu, nepieļaujot kļūdas un nejaucot to ar citiem? Apskatīsim galvenos gadījumus.

Kols vienkāršā teikumā

Noteikums 1. Kols teikumā ar viendabīgiem locekļiem

Ja vispārinošs vārds ir pirms viendabīgiem locekļiem, tad pēc tā ir nepieciešams kols, piemēram: Sniegs gulēja visur: uz māju jumtiem, uz žogiem, uz zālieniem, uz mašīnām.

Šajā teikumā vārds visur vispārina vairākus līdzīgus apstākļus. Vispārinošais vārds atrodas pirms viendabīgiem locekļiem, un tāpēc aiz tā ir kols.

2. noteikums. Kols teikumos ar kvalificējošiem vārdiem

Ja teikumā tiek lietoti vispārinoši vārdi, var izmantot precizējošus vārdus: kā, piemēram, tā, proti, pirms tam ir komats un kam seko kols. Piemēram: Sniegs gulēja visur, proti: uz māju jumtiem, uz žogiem, uz zālieniem, uz mašīnām.

Šajā teikumā kopā ar vispārinošo vārdu visur izmantota to precizējoša konstrukcija "proti" , kam seko virkne viendabīgu terminu, tāpēc tai seko kols.

3. noteikums. Kols konstrukcijās ar tiešu runu

Ja pēc autora vārdiem seko tiešā runa, tad priekšā liek kolu, bet pašu tiešo runu liek pēdiņās un pirmo tiešās runas vārdu raksta ar lielo burtu: Skolotājs teica: "Sveiki, bērni!" Tāpat, ja tiešā runa tekstā pārtrauc autora vārdus, tad priekšā tiek ievietots kols, piemēram: Sakot: “Sveiki, bērni!”, skolotāja ienāca klasē. Pēc tiešas runas jāliek komats.

Kols sarežģītā teikumā

4. noteikums. Kolu var ievietot starp nesavienojuma kompleksā teikuma (BSP) daļām šādos gadījumos.

  • BSP otrā daļa skaidro kas tika teikts pirmajā (starp teikuma daļām varat ievietot " proti"), Piemēram: Tautā ir tāda zīme: bezdelīgas lido zemu lietus laikā; Katja raksta ļoti kompetenti: viņa nekad nekļūdās vārdos un pareizi ievieto pieturzīmes.Šajos kompleksajos teikumos, kas nav saistīti ar savienību, otrā daļa sniedz skaidrojumu par to, kas tiek apspriests pirmajā. Starp teikumu daļām varat ievietot " proti": Cilvēku vidū ir tāda zīme (proti): bezdelīgas lido zemu virs ūdens pret lietu. Tāpēc iepriekš minētajos teikumos ir kols.

  • BSP otrā daļa atklāj iemeslu kas tika apspriests pirmajā (starp teikuma daļām varat ievietot saikļus: kopš, jo), Piemēram: Katja raksta ļoti kompetenti: viņa daudz lasa, mācās dzeju no galvas, trenē atmiņu; Drīz līs lietus: bezdelīgas lido zemu virs ūdens.Šajos BSP otrā daļa pamato un norāda iemeslu pirmajā teiktajam. Starp daļām varat ievietot savienojumus: kopš, jo. Drīz līs (jo): bezdelīgas lido zemu virs ūdens. Tāpēc šādos teikumos tiek lietots kols.

  • BSP otrā daļa papildina, atklāj kas tika teikts pirmajā (šādi teikumi ir sinonīmi sarežģītiem teikumiem ar skaidrojošo klauzulu, tāpēc starp BSP daļām var ievietot saikli Kas). Piemēram: Katja zina: grāmatu lasīšana ir ne tikai interesanta, bet arī ļoti noderīga mācībām; Cilvēki saka: bezdelīgas lido zemu virs ūdens, kad līst. BSP dati otrajā daļā atklāj pirmajā apspriestā nozīmi. Ja šāda teikuma daļas ir savienotas ar saikni Kas, tad jūs saņemat sarežģītu teikumu ar paskaidrojošu teikumu: Cilvēki saka (Kas,): bezdelīgas lido zemu virs ūdens pret lietu. Pirms šāda veida teikumiem ir kols.

  • Teikuma pirmajā daļā darbības vārdi ir izlaisti: un redzēja, un dzirdēja, un juta, Piemēram: Es pacēlu galvu: saules stars lauzās cauri mākoņiem, apgaismojot izcirtumu ar spilgtu gaismu; Viņš pagriezās: steidzīgu soļu atbalss bija dzirdama pavisam tuvu.Šie teikumi ir arī sinonīmi sarežģītām pakārtotām klauzulām ar skaidrojošām teikumiem; pirmajā daļā tādi darbības vārdi kā: un es redzēju un dzirdēju, Starp daļām varat ievietot savienojumu Kas. Es pacēlu galvu (un to redzēju): saules stars izlauzās cauri mākoņiem, apgaismojot izcirtumu ar spilgtu gaismu.


Kols pret domuzīmi

Galvenās grūtības, lietojot kolu, ir tādas, ka dažreiz ir viegli sajaukt šo pieturzīmi ar citu - domuzīmi. Pēdējā laikā šīs zīmes bieži tiek lietotas paralēli, tas ir, tajos pašos gadījumos var izmantot gan domuzīmi, gan kolu. Piemēram: Un tiesneši nolēma: ja līs, sacensības tiks atceltas; Es pamanīju pirmo akmeni, nolēmu, ka šeit ir dārgums, tāpēc sāku bāzt apkārt(Tendrjakovs), Protams, ka viņšmainīts(: –) saliekta, pelēka, ar grumbāmmutes kaktiņos; Es nāku iekšā(: ) viss ir kluss; Nesakiet šos vārdus viņa priekšā.(: ) var apvainoties; Ikvienu interesēja tikai viens jautājums(: ) kā pēc iespējas ātrāk izkļūt no šīs situācijas; Tas nozīmēja vienu lietu(: ) vajag šķirties.

Šādas iespējas tiek uzskatītas par līdzvērtīgām; jūs varat izmantot gan domuzīmi, gan kolu, nebaidoties kļūdīties. Tomēr jāatceras, ka domuzīme papildus sintaktiskajām funkcijām veic arī emocionālas un izteiksmīgas, tas ir, norāda uz apgalvojuma emocionalitāti un uzsver tā izteiksmīgumu. Tāpēc, ja teikumam nav šādas nozīmes un tas ir neitrāls, jums ir jāizvairās no domuzīmes lietošanas un jāliek kols, ievērojot mūsu apspriestos noteikumus.

Droši vien esat ievērojuši, cik bieži es savās nodarbībās izmantoju šos divus pseidoelementus. Kāpēc man viņi patīk? Jo tie ir tik ērti lietojami, ka jums pat nav jāpievieno papildu HTML elementi. Tomēr šis raksts nav par pseidoelementu priekšrocībām.

Šis raksts ir veltīts tam, lai vienreiz un uz visiem laikiem noskaidrotu visas neskaidrības par pseidoelementu sintaksi.

Pseido-ko?

Pseidoelementi tiek saukti, jo tie nav īsti HTML elementi. Piemēram, HTML nav atzīmju pirms un pēc, bet CSS var veidot :before un :after elementus.

Viens vai divi koli?

Nav atšķirības starp :pirms un ::pirms vai starp :after un ::after. Dubultās resnās zarnas sintakse ir raksturīga CSS3.

Vietnē http://www.w3.org/TR/css3-selectors/#pseudo-elements ir šāda rindkopa:

Šis simbols (::) tiek ieviests, lai atšķirtu pseidoklases no pseidoelementiem. Lai nodrošinātu saderību ar esošajām stilu lapām, pseidoelementus CSS 1 un 2 var norādīt arī ar vienu kolu (konkrēti :first-line, :first-letter, :before un :after).

Apkoposim

IE 7 un vecākas versijas neatbalsta uzskaitītos pseidoelementus. Taču IE 8 to atbalsta, un tas ir labs (un vienīgais) iemesls, lai izmantotu viena kola sintaksi.

Svarīgs!

Lūdzu, atcerieties, ka visas šīs runas par vienu vai diviem koliem ir tikai par pseidoelementiem, nevis pseidoklasēm.

Kā tu raksti?

Komentāros ierakstiet, kādu sintaksi izmantojat un kādu iemeslu dēļ.

Papildus atbildēm par to, ka PHP izmanto divus kolus kā "sfēras izšķirtspējas operatoru":

Turklāt tiek izmantota dubultā kola:

    lai pārveidotu nekvalificētu, kvalificētu vai pseidonīmu klases nosaukumu tā pilnībā kvalificētā formā un

    Lai izsauktu klases metodi __callStatic.

Lai pārveidotu klases nosaukumu tā pilnībā kvalificētā formā, pievienojot "::class"

Divi koli, kam seko atslēgvārds "klase" aiz klases nosaukuma, nodrošina šīs klases pilno nosaukumu kā virkni. Tas nozīmē, ka "ClassName::class" tiek pārveidots par pilnu nosaukumu "ClassName". Skatīt (A) rokasgrāmatu: klases un objekti: pamati, (B) rokasgrāmata: klases un objekti: klases konstantes un (C) rokasgrāmata: valodas atsauce: konstantes

Sintakse "::class" ir noderīga nosaukumvietā, lai iegūtu pilnībā kvalificētu klases nosaukumu no tās nekvalificētās vai kvalificētās formas vai no tās nosaukuma aizstājvārda.

Šķiet, ka sintakse "::class" darbojas, lai atrisinātu saskarnes nosaukumus, kā arī klašu nosaukumus, lai gan šķiet, ka tas nav dokumentēts iepriekš norādītajos avotos.

Klasē sintakse darbojas arī ar "self::class", kā minēts iepriekš saistītajā "::class" RFC.

Daži piemēri:

pilnsNosaukums(), PHP_EOL; // izvada: MyNamespace\TheirClass

Lai izsauktu "__callStatic"

Divus kolus var izmantot, lai "izsauktu" statisku metodes nosaukumu, kuru klase nav deklarējusi. Tas izsauc klases metodi "__callStatic", ja tā ir tādu deklarējusi. Pēc tam __callStatic metode var "dinamiski" izvēlēties, kā rīkoties ar zvanu. PHP to sauc par "pārslodzi", izmantojot "maģisko metodi" __callStatic.

handOrder($arguments); ) atgriezt "Piedod, mēs nevaram jums palīdzēt ar " . lcfirst($item) . "."; ) ) nosaukumvieta MūsuUzņēmums\Speciālisti; class Car ( public function handleOrder($arguments) ( return "Vai es varu jums palīdzēt ar $arguments auto?"; ) ) class Truck ( public function handOrder($arguments)) ( return "Vai es varu jums palīdzēt ar $arguments truck? "; ) ) izmantot OurCompany\Orders\Intake; echo Intake::orderCar("sarkans"), PHP_EOL; // izejas: Vai es varu jums palīdzēt ar sarkanu automašīnu? echo Intake::orderTruck("pickups"), PHP_EOL; // outputs: Vai es varu jums palīdzēt ar pikapu? echo Intake::orderShoes("zamšādas"), PHP_EOL; // iznākumi: Atvainojiet, mēs nevaram jums palīdzēt ar apaviem.

Jaunākie materiāli sadaļā:

Košī gadījuma lielumu sadalījuma likums
Košī gadījuma lielumu sadalījuma likums

Šķiet, ka Košī sadalījums izskatās ļoti pievilcīgs nejaušo mainīgo aprakstīšanai un modelēšanai. Tomēr patiesībā tas nav...

Ģeneratora darbības princips
Ģeneratora darbības princips

3. tēma. Elektriskās vibrācijas. Maiņstrāva elektriskā strāva. Tēmas galvenie jautājumi: 3. 1. 1. Brīvas neslāpētas elektriskās svārstības 3. 1....

Mērķu noteikšana un aktivitāšu plānošana soli pa solim Mērķu noteikšanas shēma
Mērķu noteikšana un aktivitāšu plānošana soli pa solim Mērķu noteikšanas shēma

Vēl nesen viens no biežāk citētajiem dzīves likumiem bija N. Ostrovska teiktais: “Dzīve... jādzīvo tā, lai...