ئادەتتە PHP كودلىرى ئارىسىدا جۈپ قوش چېكىت، يەنى “::” بەلگىسىنى تولا ئۇچىرىتىپ قالىمىز. قايسى كۈنى" بىلوگىمغا كود چاپلاش قىستۇرمىسىنى ئۆزگەرتەي" دەپ، ھېلىقى قىستۇرمىنىڭ ئەسلى كودىغا قارىسام، ئەڭ كۆپ ئۇچىراتقىنىم this ھالقىلىق سۆزى بىلەن “::” بەلگىسى بولدى. بېشىدا ئازراق قايقمۇقۇپ قالدىم – دە، بۇنى ئوبدان بىر چۈشەنمەي تۇرۇپ ئىشنىڭ قاملاشمايدىغانلىقىنى ھىس قىلىپ يەتتىم. شۇنىڭ بىلەن بىر قاتار مەنبەلەردىن كۆرۈپ، ئېنىق چۈشەنچە ھاسىل قىلغان بولدۇم.
جۈپ قوش چېكىت ئەمەل بەلگىسى، يەنى تەسر دائىرىسىنى(作用域) بېكىتىش ئەمەل بەلگىسى ئارقىلىق (Scope Resolution Operator) تىنىچ ھالەتتىكى، Const قىممەت، تۈر ئىچىدىكى (class) قايتا يېزىلغان خاسلىق ۋە ئۇسسۇللارنى زىيارەت قىلالايمىز. ئېنىقلانغان مەلۇم تۈرنىڭ تېشىدا بۇ ئەمەل ئارقىلىق مەزكۇر تۈرنىڭ ئۇسسۇل ياكى خاسلىقلىرىنى زىيارەت قىلماقچى بولساق، ئادەتتە تۈر نامىنى ئالدىغا يېزىپ زىيارەت قىلىمىز.
تەپسىلىي ئىشلىتىلىش ئەھۋاللىرى تۆۋەندىكىدەك بىر نەچچە خىل:
1.. پارامىتىر ئارقىلىق مەلۇم تۈرنىڭ سىرتىدىن ئۇنىڭ خاسلىق ياكى ئۇسسۇللىرىنى زىيارەت قىلىشتا ئىشلىتىلىدۇ. مىسالەن:
ئەسكەرتىش: بەت يۈزىدە ئىجرا بوپ كەتكەنلىكتىن، بارلىق مىساللاردىكى PHP باشلىنىش ۋە ئارخىلىشىش بەلگىسى قىسقارتىلدى
class Apple { const CONST_VALUE = 'Apple Color'; } $classname = 'Apple'; echo $classname::CONST_VALUE; //PHP 5.3.0, netije: Apple Color echo Fruit::CONST_VALUE; //netije: Apple Color
يەنى تۈر Apple
نىڭ ئىچىدىكى تۇراقلىق مىقدار(const قىممەت) نى يۇقىرىقدەك جۈپ قوش چېكىت ئەمىلى ئارقىلىق زىيارەت قىلالايمىز. PHP5.3.0 نەشرىدە تۈر نامىنى ئاۋۋال پارامىتىرغا ئۆتكۈزۈپ بېرىپ، ئاندىن پارامىتىرنى جۈپ قوش چېكىت ئالدىغا قويۇپ ئىشلىتىشكىمۇ بولىدۇ.
2. ۋارىسلىق قىلغۇچى تۈر ئىچىدە ئانا تۈر (parent class) نىڭ خاسلىقلىرىنى زىيارەت قىلىشتا ئىشلىتىلىدۇ. مىسالەن:
class Fruit { const CONST_VALUE = 'Fruit Color'; } class Apple extends Fruit { public static $color = 'Red'; public static function doubleColon() { echo parent::CONST_VALUE . "\n"; // ana turni ziyaret qilish echo self::$color . "\n"; // nowettiki tur ichini ziyaret qilish } } Apple::doubleColon(); // netije: Fruit Color Red
يەنى كۆرۈۋاتقىنىمىزدەك،ۋارىس تۈرنىڭ ئىچىدىكى فۇنكىسىيەدە ئانا تۈرنىڭ خاسلىقلىرىنى زىيارەت قىلىش ئۈچۈن parent:: ھالىتىدە، موشۇ تۈر ئىچىدىكى ئومۇمىي دائىرلىك پارامىتىر (全局变量) نى زىيارەت قىلىشتا self::
ھالىتىدە ئىشلىتىمىز.
3. ۋارىسلىق قىلغۇچى تۈر ئىچىدە، ئانا تۈرنىڭ ئۇسسۇللىرىنى تارتىپ قوزغىتىشتا ئىشلىتىلىدۇ. مىسالەن:
// Fruit namidiki tur class Fruit { protected function showColor() { echo "Fruit::showColor() funkisiyesi qozghitildi\n"; } } // Fruit qa waris Apple namliq tur class Apple extends Fruit { //ana turdiki ussulni qayta yezish(Override) public function showColor() { // ana turdiki showColor() funkisiyesini ishlitish parent::showColor(); echo "Apple::showColor() funkisiyesi qozghitildi\n"; } } $apple = new Apple(); $apple->showColor(); // netije: // Fruit::showColor() funkisiyesi qozghitildi //Apple::showColor() funkisiyesi qozghitildi
يەنى، ئانا تۈر ئىچىدىكى مەلۇم فۇنكىسيەنى ۋاىس تۈر ئىچىدە parent::
ھالىتىدە ئىشلىتىشكە بولىدۇ.
4. تەسىر دائىرىسىنى بەلگىلەش ئەمىلى ئورنىدا ئىشلىتىلىدۇ. مىسالەن:
class Apple { // showColor() funkisiyesige eniqlima public function showColor() { return $this->color; } } class Banana { public $color; //构造函数 public function __construct() { $this->color = "Banana is yellow"; } public function GetColor() { return Apple::showColor(); } } $banana = new Banana; echo $banana->GetColor(); // netije:Banana is yellow
يەنى، پۈتۈنلەي مۇناسىۋەتسىز كۆپ تۈرلەر ئارا فۇنكىسيە ئالماشتۇرۇپ ئىشلىتىشتە، مەلۇم فۇنكىسيەنىڭ تۈرىنى بەلگىلەشتە ئىشلىتىلىدۇ. ئىككى تۈر ئىچىدە ئوخشاش نامدىكى فۇنكىسيە بار بولسىمۇ، TurNam::Funkisiye
ھالىتىدە نۆۋەتتىكى تۈردىن باشقا خالىغان تۈر ئىچىدىكى شۇ ناملىق فۇنكىسيەنى زىيارەت قىلالايمىز.
مېنىڭ يەكۈنلەپ چىققانلىرىم يۇقارقىدەك بىرنەچچە تۈرلۈك بولدى. ئەلۋەتتە يەنە باشقا خىل ئىشلىتىلىشلىرىمۇ بولۇشى مۇمكىن، چالا كەتكەن يەرلىرى بولسا تولۇپ قويساڭلار، رەھمەت!
ياخشى تىما بوپتۇ، مەنمۇ مۇشۇ ئوبيېكىتقا يۈزلەنگەن پروگراممىنى ئۆگىنەي دەپ مۇشۇ پ خ پ نىڭكىنى ئاز تولا ماتېرىيال كۆرگەن ئىدىم. لېكىن مەن پەقەت ئەڭ ئۈستىدىكى const دىگەننى پەقەت كۆرمەپتىكەنمەن. ھازىرمۇ بەك تازا چۈشۈنۈپ كېتەلمىدىم. ئۈستىدە ئۆزگەرمەس قىممەت دەپ ئېلىپسىز. بۇ ئۆزگەرمەس قىممەت دىگەن پروگرامما تىلىرىدا خېلى ئىشلىتىلىدىغاندەك لېكىن مەن يەنە بۇ ئۆزگەرمەس قىممەت دىگەننى تازا چۈشەنمىدىم.
const
بولسا ئەدەتتە تۈر(class) ئىچىدە تۇراقلىق مىقدار(يەنى قىممىتى بىر قېتىم بەلگىلەنسە قايتا ئۆزگەرتىشكە بولمايدىغان مىقدار) ئېنىقلاشقا ئىشلىتىلىدۇ، ئادەتتە if شەرت جۈملىسى ئىچىدە ئىشلىتىشكە ياكى تۈرنىڭ سىرتىدا ئىشلىتىشكە بولمايدۇ، قوبۇل قىلىدىغىنى تىنىچ ئوبىكتلار بولىدۇ؛define
بولسا ئادەتتە تۈر سىرتىدا ئومۇمىي دائىرلىك تۇراقلىق مىقدار ئېنىقلاشقا ئىشلىتىلىدۇ. قوبۇللاش ئوبىكتى مەلۇم ئىپادە بولسىمۇ بولىدۇ. PHP تىلىدا بۇ ئىككى ھالقىلىق سۆز تۇراقلىق قىممەت (常量 ) ئېنىقلاشتا ئىشلىتىلىدۇ.====
”ئۆزگەرمەس قىممەت“ ئىبارىسى ”تۇراقلىق مىقدار“ غا توغۇرلاندى.
常量 دېگەن تۇراقلىق مىقدار دېگەنلىك بولىدۇ.
توغرا
بۇ يەرلىرى C تىلىغا ئوخشاپ قالامدۇ نىمە؟