Agar siz php tilida yozilgan har qanday dastur kodlarini tahlil qilgan bo'lsangiz, kodda shunday maxsus kodlarga duch kelganingiz aniq. belgilar:

-> (tire va belgidan katta)

:: (ikki nuqta)

Misol uchun, ushbu iboralar bilan tuzilgan konstruktsiyalar quyidagicha ko'rinishi mumkin:

Salom ::hello_world(); q -> salom_dunyo();

Ushbu konstruktsiyalar nima uchun ekanligini tushunish uchun eng oddiy misolni ko'rib chiqaylik. Aytaylik, bizda oddiy “Salom dunyo!” dasturi bor.

Keling, oddiy PHP fayl yaratamiz va unga quyidagi kodni yozamiz:

Class Salom (hello_world funktsiyasi () ( "Salom dunyo" aks-sadosi; ) )

Endi hello_world() funksiyasini qanday bajarishingiz haqida o'ylab ko'ring.

Agar hello_world() funktsiyasi Hello sinfida bo'lmasa, biz uni juda oddiy deb atar edik:

Salom Dunyo();

Natijada biz ekranda "Salom dunyo" yozuviga ega bo'lardik. Ammo, ehtimol, agar siz muammoni shu tarzda hal qilishga harakat qilsangiz, ekranda xatolik yuz berdi:

Fatal xato: …/test.php on line… da noaniq hello_world() funksiyasiga qo‘ng‘iroq qilish…

Hammasi to'g'ri, chunki funktsiya sinfda bo'lsa, kompyuterga uni Hello sinfida izlash kerakligini aytishingiz kerak. Agar bu bajarilmasa, hech narsa ishlamaydi.

Bunday ma'lumotlarni kompyuterga qanday etkazish mumkin?

Bu erda bir nechta variant mavjud. Keling, har birini alohida ko'rib chiqaylik.

1 variant. Sinfning namunasini yaratish orqali.

$q = yangi Salom;

Ushbu qator yordamida biz Hello sinfining namunasini yaratamiz. Ushbu operatsiyadan so'ng biz ushbu misol orqali o'zimizga kerak bo'lgan funksiyaga erkin kira olamiz, bu holda u $ q o'zgaruvchisida saqlanadi.

$q -> hello_world();

"->" konstruktsiyasi sinf misoli va funksiya o'rtasidagi bog'lovchi bo'g'inga aylanadi.

Endi hammasi ishlaydi. Xayr! Ekranda "Salom dunyo" ni ko'rishingiz kerak.

Variant 2. Ikki nuqta konstruktsiyasidan foydalanish:

Bu variant ancha oson. Bu yerda hech qanday misol yaratishingiz shart emas. Biz shunchaki yozamiz.

Salom ::hello_world();

Funktsiya muvaffaqiyatli tugashini tekshirishingiz mumkin.

Umid qilamanki, ushbu eslatmani o'qib chiqqandan so'ng, siz endi "->" va "::" yaratilgan sinfda kerakli funktsiyaga kirish uchun ishlatilishini tushunasiz.

Xuddi shu konstruktsiyalar yordamida biz sinflardagi o'zgaruvchilarga kirishimiz mumkin. Yagona farq shundaki, siz oxiriga qavs qo'yishingiz shart emas. Misol uchun:

Salom Dunyo;

Ushbu konstruktsiya bilan biz Hello sinfida joylashgan dunyo o'zgaruvchisiga murojaat qilamiz.

Ayniqsa, ko'pincha bunday konstruktsiyalarni turli xil saytlarni boshqarish tizimlarining kodlarini tahlil qilishda topish mumkin. Joomla, WordPress va boshqalar kabi tizimlarning manba kodiga qarang. Endi bularning barchasi nima uchun ekanligini bilasiz.

Yangi boshlanuvchilar uchun PHP bo'yicha ko'proq darsliklarim.

PHP-ning ikkita ikki nuqtadan "ko'lamni aniqlash operatori" sifatida foydalanishiga oid javoblarga qo'shimcha ravishda:

Bundan tashqari, ikki nuqta qo'llaniladi:

    Noma'lum, malakali yoki taxallus sinf nomini uning to'liq malakali shakliga aylantirish uchun va

    Sinf usulini chaqirish uchun __callStatic.

"::class" qo'shish orqali sinf nomini to'liq malakali shaklga aylantirish uchun

Sinf nomidan keyin ikkita ikki nuqtadan keyin “sinf” kalit soʻzi keladi to'liq ism satr sifatida ushbu sinf. Ya'ni, "ClassName::class" to'liq malakali "ClassName" nomiga aylantiriladi. (A) Qoʻllanma: Sinflar va obʼyektlar: Asoslar, (B) Qoʻllanma: Sinflar va obʼyektlar: Sinf doimiylari va (C) Qoʻllanma: Til uchun havola: Konstantalarga qarang.

"::class" sintaksisi nomlar maydonida sinfning to'liq malakali nomini sifatsiz yoki malakali shaklidan yoki uning nomining taxallusidan olish uchun foydalidir.

"::class" sintaksisi interfeys nomlari bilan bir qatorda sinf nomlarini ham hal qilish uchun ishlaydi, ammo bu yuqorida keltirilgan manbalar tomonidan hujjatlashtirilmaganga o'xshaydi.

Sintaksis sinf ichida yuqoridagi "::class" RFC da aytib o'tilganidek, "self::class" bilan ham ishlaydi.

Bir necha misol:

fullName(), PHP_EOL; // chiqadi: MyNamespace\TheirClass

"__callStatic" ga qo'ng'iroq qilish uchun

Sinf e'lon qilmagan statik usul nomini "chaqirish" uchun ikkita ikki nuqtadan foydalanish mumkin. Agar u e'lon qilgan bo'lsa, bu "__callStatic" sinf usulini chaqiradi. __callStatic usuli qo'ng'iroqni qanday boshqarishni "dinamik" tanlashi mumkin. PHPda bu "sehrli usul" __callStatic bilan "ortiqcha yuklash" deb ataladi.

handleOrder($argumentlar); ) "Kechirasiz, biz sizga yordam bera olmaymiz" deb qaytaring. lcfirst ($ element) . "."; ) ) nomlar maydoni OurCompany\Specialists; class Car ( public function handleOrder($arguments) ( qaytish "Sizga $arguments avtomobili bilan yordam bera olamanmi?"; ) ) class Truck ( public function handleOrder($arguments) (qaytish "Sizga $arguments yuk mashinasi bilan yordam bera olamanmi? "; ) ) Kompaniyamiz\Orders\Intake-dan foydalaning; echo Intake::orderCar("qizil"), PHP_EOL; // chiqishlar: Sizga qizil mashinada yordam bera olamanmi? echo Intake::orderTruck("pickup"), PHP_EOL; // natijalar: Men sizga yuk mashinasida yordam bera olamanmi? echo Intake::orderShoes("zamsh"), PHP_EOL; // chiqadi: "Kechirasiz, biz sizga poyabzal bilan yordam bera olmaymiz".

Mening darsliklarimda ushbu ikkita psevdoelementdan qanchalik tez-tez foydalanayotganimni payqagandirsiz. Nega men ularni yoqtiraman? Chunki ulardan foydalanish juda qulay bo‘lib, qo‘shimcha HTML elementlarini qo‘shish shart emas. Biroq, bu maqola psevdo-elementlarning afzalliklari haqida emas.

Ushbu maqola psevdo-elementlar sintaksisi bilan bog'liq tushunmovchiliklarni bir marta va umuman tushuntirishga bag'ishlangan.

Pseudo nima?

Pseudo-elementlar haqiqiy HTML elementlari bo'lmagani uchun shunday nomlanadi. Misol uchun, HTMLda oldin va keyin teglar mavjud emas, lekin CSS da siz :before va :after elementlariga uslublarni qo'llashingiz mumkin.

Bir yoki ikkita nuqta?

:oldin va::oldin yoki :keyin va::keyin o’rtasida farq yo’q. Ikki nuqta sintaksisi CSS3 uchun xosdir.

http://www.w3.org/TR/css3-selectors/#pseudo-elements quyidagi paragrafga ega:

Bu belgi (::) psevdosinflarni psevdoelementlardan farqlash uchun kiritilgan. Oldindan mavjud uslublar jadvallari bilan mos kelishi uchun CSS 1 va 2-dagi psevdo-elementlar bitta ikki nuqta bilan ham belgilanishi mumkin (xususan, :birinchi qator, :birinchi harf, :oldin va :keyin).

Xulosa qilish

IE 7 va undan oldingi versiyalar sanab o'tilgan psevdo-elementlarni qo'llab-quvvatlamaydi. Lekin IE 8 shunday qiladi va bu bitta ikki nuqtali sintaksisdan foydalanish uchun yaxshi (va yagona) sababdir.

Muhim!

Yodda tutingki, bir yoki ikkita ikki nuqta haqidagi bu gaplarning barchasi psevdo-sinflar haqida emas, balki faqat psevdoelementlar haqida.

Qanday yozasiz?

Qaysi sintaksisdan va qanday sabablarga ko'ra foydalanayotganingizni izohlarda yozing.

Demak, yo‘g‘on nuqta tinish belgilarini ajratuvchidir. Nuqta, undov va so‘roq belgilari, ellipsisdan farqli o‘laroq, u ajratuvchi funksiyaga ega emas, ya’ni matndagi gaplarni bir-biridan ajratmaydi. Ikki nuqta faqat gapning ichiga qo'yiladi va shuning uchun undan keyin gap davom etishini bildiradi.

Ikki nuqta oddiy va murakkab gaplarda uchraydi. Oddiy gapda gap qismlarini ajratib turadi va ajratib ko'rsatadi, murakkab gapda esa semantik rol o'ynaydi: bog'lanmagan murakkab gap qismlari o'rtasidagi semantik aloqalarni ko'rsatadi.

Xo‘sh, yo‘g‘on nuqtani xatoga yo‘l qo‘ymaslik va boshqalar bilan chalkashtirmaslik qanday to‘g‘ri? Keling, asosiy holatlarni ko'rib chiqaylik.

Oddiy gapda ikki nuqta

Qoida 1. Bir jinsli a’zoli gapda ikki nuqta

Agar umumlashtiruvchi so'z bir hil a'zolar oldida bo'lsa, undan keyin ikki nuqta kerak, masalan: qor yog'di hamma joyda: uylarning tomlarida, to'siqlarda, maysazorlarda, mashinalarda.

Ushbu jumlada so'z hamma joyda bir qator shunga o'xshash holatlarni umumlashtiradi. Umumlashtiruvchi so‘z bir jinsli a’zolardan oldin joylashgan, shuning uchun undan keyin ikki nuqta qo‘yiladi.

2-qoida. Sifatli so‘zli gaplarda ikki nuqta

Gapdagi so'zlarni umumlashtirishda sifatlovchi so'zlardan foydalanish mumkin: masalan, masalan, shunday, ya'ni, oldiga vergul va keyin ikki nuqta qo'yiladi. Misol uchun: qor yog'di hamma joyda, aynan: uylarning tomlarida, to'siqlarda, maysazorlarda, mashinalarda.

Bu gapda umumlashtiruvchi so'z bilan birga hamma joyda uning konstruksiyasini takomillashtirishdan foydalangan "aynan" , keyin bir hil a'zolar qatori, shuning uchun undan keyin ikki nuqta qo'yiladi.

Qoida 3. To'g'ridan-to'g'ri nutqli konstruktsiyalarda yo'g'on nuqta

Agar to'g'ridan-to'g'ri nutq muallifning so'zlaridan keyin bo'lsa, uning oldiga ikki nuqta qo'yiladi va to'g'ridan-to'g'ri nutqning o'zi qo'shtirnoq ichiga olinadi va to'g'ridan-to'g'ri nutqning birinchi so'zi bosh harf bilan yoziladi: O'qituvchi dedi: "Salom, bolalar!". Shuningdek, agar to'g'ridan-to'g'ri nutq matndagi muallifning so'zlarini buzsa, uning oldiga ikki nuqta qo'yiladi, masalan: O'qituvchi: "Salom, bolalar!" Deb sinfga kirdi. To'g'ridan-to'g'ri nutqdan keyin vergul qo'yilishi kerak.

Qo‘shma gapdagi ikki nuqta

4-qoida. Ikki nuqta birlashmasiz murakkab gapning (BSP) qismlari orasiga quyidagi hollarda qo'yilishi mumkin.

  • BSP ning ikkinchi qismi tushuntiradi birinchisida nima deyilgan (jumlaning qismlari orasiga qo'shishingiz mumkin " aynan"), misol uchun: Odamlar orasida shunday belgi bor: qaldirg'ochlar yomg'irga past uchadi; Katya juda malakali yozadi: u hech qachon so'zlarda xato qilmaydi, tinish belgilarini to'g'ri qo'yadi. Ushbu birlashma bo'lmagan murakkab jumlalarda, ikkinchi qismda, birinchisida muhokama qilinadigan narsalar haqida tushuntirish beriladi. Siz jumlalar qismlari orasiga qo'yishingiz mumkin " aynan": Xalq orasida bir gap bor (aynan): qaldirg'ochlar yomg'ir yog'ishi uchun suv ustida pastdan uchadi. Shuning uchun yuqoridagi gaplarda ikki nuqta qo‘llaniladi.

  • BSP ning ikkinchi qismi sababini ochib beradi birinchisida nima deyilgan (bog'lovchilar gap qismlari orasiga qo'yilishi mumkin: chunki, chunki), misol uchun: Katya juda malakali yozadi: u ko'p o'qiydi, she'rni yoddan o'rganadi, xotirasini mashq qiladi; Tez orada yomg'ir yog'adi: qaldirg'ochlar suv ustida pastdan uchib ketishadi. Ushbu BSPlarda ikkinchi qism asoslanadi, birinchisida aytilganlarning sababini ko'rsatadi. Birlashmalar qismlar orasiga kiritilishi mumkin: chunki, chunki. Tez orada yomg'ir yog'adi (chunki): qaldirg'ochlar suv ustida pastdan uchadi. Shuning uchun bunday gaplarda ikki nuqta qo‘llaniladi.

  • BSP ning ikkinchi qismi to‘ldiradi, ochadi birinchisida aytilgan narsa (bunday jumlalar tushuntirish bandi bo'lgan murakkab jumlalar bilan sinonimdir, shuning uchun BSP qismlari orasiga birlashma qo'shilishi mumkin nima). Misol uchun: Katya biladi: kitob o'qish nafaqat qiziqarli, balki o'qish uchun juda foydali; Odamlar aytadilar: qaldirg'ochlar yomg'ir yog'ishi uchun suv ustida past uchadi. Ikkinchi qismdagi BSP ma'lumotlarida birinchi qismda muhokama qilingan narsaning ma'nosi ochiladi. Bunday gap qismlari birlashma orqali bog`langan bo`lsa nima, keyin siz tushuntirish bandi bilan murakkab jumla olasiz: Xalq aytadi (nima,): qaldirg'ochlar yomg'ir yog'ishi uchun suv ustida pastdan uchadi. Bu turdagi gaplarda ikki nuqta qo‘llaniladi.

  • Gapning birinchi qismida fe'llar tushirilgan: va ko'rdim, eshitdim va his qildim, misol uchun: Men boshimni ko'tardim: quyosh nuri bulutlar orasidan o'tib, tozalikni yorqin nur bilan yoritdi; U ortiga o‘girildi: shoshqaloq qadamlarning aks-sadosi juda yaqindan eshitildi. Bu jumlalar izohli bo‘lakli murakkab tobe bo‘lak bilan ham sinonim bo‘lib, birinchi qismda tipdagi fe’llar tushirib qo‘yilgan: va ko'rgan va eshitgan birlashma qismlar orasiga kiritilishi mumkin nima. Men boshimni ko'tardim (va buni ko'rdim): quyosh nuri bulutlar orasidan o'tib, tozalikni yorqin nur bilan yoritdi.


Ikki nuqta va chiziqcha

Ikki nuqtadan foydalanishning asosiy qiyinligi shundaki, ba'zida bu tinish belgisini boshqasi bilan chalkashtirib yuborish oson - tire. So'nggi paytlarda bu belgilar ko'pincha parallel ravishda qo'llaniladi, ya'ni bir xil holatlarda chiziqcha va ikki nuqta qo'yilishi mumkin. Misol uchun: Va hakamlar qaror qilishdi: agar yomg'ir yog'sa, musobaqa bekor qilinadi; Men birinchi toshga e'tibor qaratdim, qaror qildim - bu erda xazina bor, men aylana boshladim(Tendryakov), Albatta uo'zgardi(: –) egilgan, kulrang, ajinlanganog'iz burchaklarida; Men kiryapman(: ) hamma narsa tinch; Uning oldida bu so'zlarni aytmang(: ) xafa bo'lishi mumkin; Hammani faqat bitta savol qiziqtirdi(: ) imkon qadar tezroq vaziyatdan qanday chiqish kerak; Bu bir narsani anglatardi(: ) ajratish kerak.

Bunday variantlar teng deb hisoblanadi, siz xato qilishdan qo'rqmasdan chiziq va ikki nuqtadan foydalanishingiz mumkin. Ammo shuni esda tutish kerakki, chiziqcha sintaktik funktsiyalardan tashqari hissiy va ekspressiv funktsiyalarni ham bajaradi, ya'ni gapning emotsionalligini ko'rsatadi, uning ekspressivligini ta'kidlaydi. Shuning uchun, agar jumlada bunday ma'nolar bo'lmasa, neytral bo'lsa, biz ko'rib chiqqan qoidalarga rioya qilgan holda, chiziqcha qo'llashdan qochish va ikki nuqta qo'yish kerak.