PHP интерпретацияланган тилин үйрөнүүдө жаңы башталган веб-программисттер $ this псевдо өзгөрмөсү сыяктуу түшүнүккө туш болушат. Анын максаты жана коддогу колдонуу эрежелери башка бардык өзгөрүлмөлүүлөрдөн таптакыр айырмалангандыктан, бул маселе боюнча кененирээк токтолуп кетүү керек.
Класстар жана объектилер
PHPде 5-версиядан бери колдонулуп келе жаткан объектке багытталган программалоо (OOP) программистке бир эле класстын объектилери деп аталган каалаган санын түзүү мүмкүнчүлүгүн берет; бул учурда, ар бир түзүлгөн нуска өзүнүн атын алат. Объект аргументтер деп аталган маалыматтарды алып, аларды функциялар менен иштетип, натыйжасын бере алат. Класстын каалаган функциясы өзүнүн касиеттерине түздөн-түз эмес, объект-> менчиктин курулушу аркылуу гана жете алат, ошондуктан суроо туулат: кандай гана болбосун жаратылган объекттин аталышына карабастан, анын берилиштер менен иштөөсүнө мүмкүнчүлүк берген универсалдуу кодду кантип жазса болот? 1-сүрөттө көрсөтүлгөн мисалды карап көрөлү.
Бул код өзгөрмөсү (касиети) жана эки функциясы (ыкмасы) бар классты жарыялайт, алардын бири конструктор, б.а. жаңы объект түзүлгөндө автоматтык түрдө башталат. Конструктор функциясынын милдети - объект түзүлгөндө аргумент менен алынган касиетке маалыматтарды ыйгаруу. Ыкма, аталган учурда, касиеттин маанисин кайтарып берет.
Андан кийин, 12 жана 13-саптарды карап чыгыңыз. Аларда класстын эки жаңы экземпляры түзүлгөн, алардын бири аргумент катары 5 санын алат, ал эми экинчиси - 7. Бул маанилер конструктор функциясы аркылуу өзгөрүлмөгө берилет (мүлк) класстын ичинде гана жеткиликтүү. Ар бир түзүлгөн объект өзгөрмөлөргө бекитилген жана ошого жараша (тагыраагы, бул өзгөрүлмөлөр көрсөтүлгөн объекттерге шилтемелерди гана алышат, бирок учурда бул эч кандай мааниге ээ эмес). Эми менчик касиеттерин жөнөкөй ыкма чалуунун жардамы менен ала аласыз (15 жана 16-саптар).
$ Бул жасалма өзгөрмөчөнү ыйгаруу
Көңүл буруңуз: бизде бирдей ыкмалар менен эки башка объектилер бар.
Бул жерде жасалма өзгөрүлмө жардамга келет. Анын аталышын англисчеден "бул" деп которсо болот, б.а. жайгашкан объектине көрсөтөт (шилтеме болуп саналат). Натыйжада, 5-сапты "объекттин касиетине аргументтин маанисин ыйгаруу", 8-сап - "объекттин касиетинин наркын кайтаруу" деп окуса болот. Анткени, өзгөрүлмө автоматтык түрдө тиешелүү мааниге ээ болот.