Käärsool: kuhu, millal ja miks koolon panna. Mida kaks koolonit PHP-s tähendavad? Kui kaks lauset eraldatakse kooloniga
Lisaks vastustele, mis puudutavad PHP kahe kooloni kasutamist "ulatuse eraldusvõime operaatorina":
Lisaks kasutatakse topeltkoolonit:
Kvalifitseerimata, kvalifitseeritud või varjunimega klassinime teisendamiseks selle täielikult kvalifitseeritud vormiks ja
Klassimeetodi kutsumiseks __callStatic.
Klassi nime teisendamiseks selle täielikuks vormiks, lisades "::class"
Kaks koolonit, millele järgneb klassi nime järel märksõna "klass", annavad selle klassi täieliku nimetuse stringina. See tähendab, et "ClassName::class" teisendatakse täisnimeks "ClassName". Vaata (A) käsiraamatut: klassid ja objektid: põhitõed, (B) käsiraamatut: klassid ja objektid: klassi konstandid ja (C) käsiraamatut: keeleviide: konstandid
"::class" süntaks on kasulik nimeruumis täieliku klassinime saamiseks selle kvalifitseerimata või kvalifitseeritud vormist või selle nime varjunimest.
Tundub, et "::class" süntaks töötab nii liideste kui ka klasside nimede lahendamisel, kuigi tundub, et ülaltoodud allikad seda ei dokumenteerinud.
Klassi sees töötab süntaks ka "self::class"-ga, nagu on mainitud ülal lingitud "::class" RFC-s.
Mõned näited:
täisnimi(), PHP_EOL; // väljundid: MyNamespace\TheirClass
"__callStatic" helistamiseks
Kahe kooloniga saab "välja kutsuda" staatilise meetodi nime, mida klass pole deklareerinud. See kutsub klassimeetodit "__callStatic", kui see on selle deklareerinud. Meetod __callStatic saab seejärel "dünaamiliselt" valida, kuidas kõnet käsitleda. PHP-s nimetatakse seda "ülekoormamiseks", kasutades "maagilist meetodit" __callStatic .
handOrder($argumendid); ) tagastage "Vabandust, me ei saa teid aidata " . lcfirst($item) . "."; ) ) nimeruum Meie Ettevõte\Specialists; class Car ( public function handleOrder($arguments) ( return "Kas ma saan teid $arguments autoga aidata?"; ) ) class Truck ( public function handleOrder($arguments) ( return "Kas ma saan teid $arguments truckiga aidata? "; ) ) kasutage Meie Ettevõte\Orders\Intake; echo Intake::orderCar("punane"), PHP_EOL; // väljundid: Kas saan teid aidata punase autoga? echo Intake::orderTruck("pickup"), PHP_EOL; // väljundid: Kas saan teid pikapiga aidata? echo Intake::orderShoes("seemisnahk"), PHP_EOL; // väljundid: Vabandust, me ei saa teid kingade osas aidata.
Kui oled mõne PHP-s kirjutatud programmi koode analüüsinud, siis oled ilmselt koodis selliseid erilisi asju kohanud. tegelased:
-> (kriips ja suurem kui märk)
:: (Topeltkoolon)
Näiteks võivad nende avaldistega konstruktsioonid välja näha järgmised:
Tere::tere_maailm(); q -> tere_maailm();
Et mõista, miks neid struktuure vaja on, vaatame kõige lihtsamat näidet. Oletame, et meil on lihtne programm "Tere maailm!".
Loome lihtsa php-faili ja kirjutame sellesse järgmise koodi:
Klass Tere ( funktsioon hello_world () ( kaja "Tere maailm"; ) )
Nüüd mõelge, kuidas saate funktsiooni hello_world() käivitada.
Kui funktsioon hello_world() poleks klassis Hello, kutsuksime seda väga lihtsalt:
Tere, Maailm();
Selle tulemusel ilmuksid ekraanile sõnad "Tere maailm". Kuid tõenäoliselt, kui proovisite probleemi sel viisil lahendada, ilmus ekraanile tõrge:
Saatuslik viga: väljakutse määratlemata funktsioonile hello_world() failis …/test.php võrgus…
Kõik on õige, sest funktsioon on klassis, siis tuleb arvutile öelda, et seda tuleb Hello klassist otsida. Kui te seda ei tee, siis miski ei tööta.
Kuidas saab sellist teavet arvutisse edastada?
Siin on mitu võimalust. Vaatame igaüht eraldi.
Valik 1. Klassi eksemplari loomise kaudu.
$q = uus Tere;
Selle reaga loome nn Hello klassi eksemplari. Pärast seda toimingut saame selle eksemplari kaudu vabalt juurde pääseda vajalikule funktsioonile, mis antud juhul on salvestatud muutujas $q.
$q -> tere_maailm();
Konstruktsioonist "->" saab lüli klassi eksemplari ja funktsiooni vahel.
Nüüd kõik töötab. Hurraa! Ekraanile peaksite nägema "Tere maailm".
2. võimalus. Kahe käärsoole konstruktsiooni kasutamine:
See valik on veelgi lihtsam. Siin ei pea te isegi eksemplare looma. Me lihtsalt kirjutame.
Tere::tere_maailm();
Saate kontrollida, kas funktsiooni täitmine õnnestub.
Loodan, et pärast selle märkuse lugemist saate nüüd aru, et loodud klassis kasutatakse soovitud funktsioonile juurdepääsu saamiseks "->" ja "::".
Kasutades samu konstruktsioone, saame juurdepääsu muutujatele, mis asuvad klassides. Ainus erinevus on see, et lõppu pole vaja sulgusid panna. Näiteks:
Tere, Maailm;
Selle konstruktsiooniga pääseme ligi maailmamuutujale, mis asub Hello klassis.
Eriti sageli võib selliseid konstruktsioone leida erinevate veebilehe haldussüsteemide koodi analüüsimisel. Vaadake selliste süsteemide lähtekoodi nagu Joomla, WordPress jne. Nüüd teate, milleks see kõik on.
Rohkem minu PHP õpetusi algajatele.
Olete ilmselt märganud, kui tihti ma neid kahte pseudoelementi oma tundides kasutan. Miks need mulle meeldivad? Kuna neid on nii mugav kasutada, et te ei pea isegi lisama täiendavaid HTML-elemente. See artikkel ei räägi aga pseudoelementide eelistest.
See artikkel on pühendatud pseudoelementide süntaksiga seotud segaduse lõplikule selgitamisele.
Pseudo-mis?
Pseudoelemente nimetatakse nn, kuna need pole päris HTML-elemendid. Näiteks HTML-is ei ole enne ja pärast silte, kuid CSS-is saate stiilida elemente :before ja :aff.
Üks või kaks koolonit?
Ei ole vahet :enne ja ::enne ega :pärast ja ::pärast vahel. Topeltkooloni süntaks on spetsiifiline CSS3-le.
Aadressil http://www.w3.org/TR/css3-selectors/#pseudo-elements on järgmine lõik:
See sümbol (::) võetakse kasutusele pseudoklasside eristamiseks pseudoelementidest. Olemasolevate stiililehtedega ühilduvuse huvides saab CSS 1 ja 2 pseudoelemente määrata ka ühe kooloniga (täpsemalt :first-line, :first-letter, :before ja :fter).
Teeme kokkuvõtte
IE 7 ja varasemad versioonid ei toeta loetletud pseudoelemente. Kuid IE 8 toetab seda ja see on hea (ja ainus) põhjus ühe kooloniga süntaksi kasutamiseks.
Tähtis!
Pidage meeles, et kogu see jutt ühest või kahest koolonist puudutab ainult pseudoelemente, mitte pseudoklasse.
Kuidas sa kirjutad?
Kirjuta kommentaaridesse, millist süntaksit kasutad ja mis põhjustel.
Niisiis, koolon on kirjavahemärk. Erinevalt punktist, hüüu- ja küsimärkidest ning ellipsist ei ole sellel eraldavat funktsiooni ehk ta ei eralda tekstis lauseid üksteisest. Käärsool asetatakse ainult lause sisse ja seepärast näitab, et väidet jätkatakse pärast seda.
Käärsoole võib leida lihtsatest ja keerukatest lausetest. Lihtlauses jagab ja tõstab esile väite osi, komplekslauses täidab see ka semantilist rolli: näitab mitteliituva komplekslause osade vahelisi semantilisi seoseid.
Kuidas siis käärsoole õigesti kasutada, ilma vigu tegemata ja teistega segi ajamata? Vaatame peamisi juhtumeid.
Käärsool lihtsas lauses
Reegel 1. Homogeensete liikmetega lauses koolon
Kui homogeensete liikmete ees on üldistav sõna, siis pärast seda on vaja koolonit, näiteks: Lumi lamas kõikjal: majade katustel, piirdeaedadel, muruplatsidel, autodel.
Selles lauses sõna kõikjal üldistab mitmeid sarnaseid asjaolusid. Üldistav sõna asub homogeensete liikmete ees ja seetõttu on selle järel koolon.
Reegel 2. Käärsool lausetes koos määravate sõnadega
Kui lauses kasutatakse üldistavaid sõnu, võib kasutada täpsustavaid sõnu: nagu näiteks niimoodi, nimelt millele eelneb koma ja järgneb koolon. Näiteks: Lumi lamas kõikjal, nimelt: majade katustel, piirdeaedadel, muruplatsidel, autodel.
Selles lauses koos üldistava sõnaga kõikjal kasutati seda selgitavat konstruktsiooni "nimelt" , millele järgneb rida homogeenseid termineid, seega järgneb koolon.
Reegel 3. Käärsool otsekõnega konstruktsioonides
Kui otsekõne järgneb autori sõnadele, siis asetatakse selle ette koolon ja otsekõne ise pannakse jutumärkidesse ning otsekõne esimene sõna kirjutatakse suure algustähega: Õpetaja ütles: "Tere, lapsed!" Samuti, kui otsekõne rikub tekstis autori sõnu, asetatakse selle ette koolon, näiteks: Öeldes: "Tere, lapsed!" astus õpetaja klassiruumi. Pärast otsekõnet peate panema koma.
Käärsool keerulises lauses
Reegel 4. Käärsoole võib asetada mitteliituva komplekslause (BSP) osade vahele järgmistel juhtudel.
- BSP teine osa selgitab mis öeldi esimeses (lause osade vahele võid sisestada " nimelt"), Näiteks: Rahva seas on selline märk: pääsukesed lendavad madalalt, kui sajab; Katya kirjutab väga asjatundlikult: ta ei tee sõnades kunagi vigu ja paneb kirjavahemärgid õigesti. Nendes mitteliituvates keerulistes lausetes selgitab teine osa, mida esimeses arutatakse. Lauseosade vahele saate lisada " nimelt": Rahva seas on selline märk (nimelt): pääsukesed lendavad madalalt üle vee vihma poole. Seetõttu on ülaltoodud lausetes koolon.
- BSP teine osa paljastab põhjuse millest oli juttu esimeses (saate lisada sidesõnu lauseosade vahele: sest, sest), Näiteks: Katya kirjutab väga asjatundlikult: ta loeb palju, õpib luulet pähe, treenib mälu; Varsti sajab vihma: pääsukesed lendavad madalalt üle vee. Nendes BSP-des teine osa põhjendab ja toob ära esimeses öeldu põhjuse. Osade vahele saate lisada sidesõnu: sest, sest. Varsti hakkab vihma sadama (sest): pääsukesed lendavad madalal vee kohal. Sellepärast kasutatakse sellistes lausetes koolonit.
- BSP teine osa täiendab, paljastab mis öeldi esimeses (sellised laused on sünonüümid seletuslausega keerukatele lausetele, seetõttu võib BSP osade vahele lisada sidesõna Mida). Näiteks: Katya teab: raamatute lugemine pole mitte ainult huvitav, vaid ka õppimiseks väga kasulik; Rahvas ütleb: pääsukesed lendavad vihma ajal madalalt vee kohal. Teises osas olevad BSP andmed näitavad esimeses osas käsitletu tähendust. Kui sellise lause osi ühendab sidesõna Mida, siis saate keeruka lause koos seletuslausega: Inimesed ütlevad (Mida,): pääsukesed lendavad madalalt üle vee vihma poole. Seda tüüpi lausetele eelneb koolon.
- Lause esimeses osas jäetakse tegusõnad välja: ja nägi ja kuulis ja tundis, Näiteks: Tõstsin pea: päikesekiir tungis läbi pilvede, valgustades lagendikku ereda valgusega; Ta pöördus ümber: kiirustavate sammude kaja oli kuulda väga lähedalt. Need laused on sünonüümid ka keerulistele seletuslausetega kõrvallausetele; esimeses osas on tegusõnad nagu: ja ma nägin ja kuulsin, Osade vahele saab sisestada sidesõna Mida. Tõstsin pea (ja nägin seda): päikesekiir murdis läbi pilvede, valgustades lagendikku ereda valgusega.
Käärsool vs kriips
Peamine raskus kooloni kasutamisel on see, et mõnikord on seda kirjavahemärki lihtne segi ajada teisega – kriipsuga. Viimasel ajal kasutatakse neid märke sageli paralleelselt, see tähendab, et samadel juhtudel võib panna nii kriipsu kui ka koolonit. Näiteks: Ja kohtunikud otsustasid: kui sajab, jääb võistlus ära; Märkasin esimest kivi, otsustasin, et siin on aare, nii et hakkasin ringi torkima(Tendryakov), Muidugi tamuutunud(: –) küürus, hall, kortsudegasuu nurkades; ma tulen sisse(: – ) kõik on vaikne; Ära ütle neid sõnu tema ees.(: – ) võib solvuda; Kõiki huvitas ainult üks küsimus(: – ) kuidas sellest olukorrast võimalikult kiiresti välja tulla; See tähendas üht(: – ) vaja lahku minna.
Selliseid valikuid peetakse võrdseteks, võite kasutada nii kriipsu kui ka koolonit, kartmata eksida. Siiski peame meeles pidama, et kriips täidab lisaks süntaktilistele funktsioonidele ka emotsionaalseid ja ekspressiivseid funktsioone, see tähendab, et see näitab väite emotsionaalsust ja rõhutab selle väljendusrikkust. Seega, kui lausel pole selliseid tähendusi ja see on neutraalne, peate vältima sidekriipsu kasutamist ja panema koolonit, järgides arutletud reegleid.