PHP இல் இட்டேரபிள் என்றால் என்ன?
திரும்பச் சொல்லக்கூடியது மீண்டும் மீண்டும் செய்யக்கூடிய ஒரு மதிப்பு. நீங்கள் ஒரு லூப் மூலம் எத்தனை முறை சென்றீர்கள் என்பதைக் கண்காணிக்க இது ஒரு சிறந்த வழி. எடுத்துக்காட்டாக, நீங்கள் 10 மறு செய்கைகளுக்குப் பிறகு ஒரு லூப்பில் இருந்து வெளியேற விரும்பினால், நீங்கள் அதை மீண்டும் செய்யக்கூடியதைப் பயன்படுத்தி செய்யலாம்.
PHP இல் Iterables ஐ எவ்வாறு பயன்படுத்துவது
- திரும்பச் சொல்லக்கூடியது a ஆல் ஏற்றுக்கொள்ளப்படும் எந்த மதிப்பும் ஆகும் ஒவ்வொரு லூப்.
- PHP 7.1 இந்த போலி-தரவு வகையை அறிமுகப்படுத்தியது மற்றும் இது திரும்பும் தரவு வகை செயல்பாடுகளாகப் பயன்படுத்தப்படலாம். மேலும், செயல்பாடு அதன் வாதமாக மறுபரிசீலனைகளை ஏற்கலாம்.
லூப்களைக் கையாளும் போது மறு செய்கை எண்ணிக்கையைக் கண்காணிக்க இட்டேரபிள்கள் ஒரு எளிய முறையை வழங்குகின்றன, இது சில சூழ்நிலைகளில் எளிதாக இருக்கும். இது ஒரு செயல்பாட்டின் திரும்பும் வகையாகவும் பயன்படுத்தப்படலாம், மேலும் செயல்பாடு மறுபரிசீலனைகளை வாதங்களாக எடுத்துக் கொள்ளலாம்.
ஒரு பொருள் இயங்கக்கூடியதா என்பதை எவ்வாறு சரிபார்க்கலாம்
ஒரு பொருள், IteratorAggregate அல்லது Iterator இடைமுகங்களின் நிகழ்வா என்பதைத் தீர்மானிக்க, ஆபரேட்டரின் உதாரணத்தைப் பயன்படுத்தவும். எடுத்துக்காட்டாக:
$obj = new MyClass();
if ($obj instanceof IteratorAggregate || $obj instanceof Iterator) {
// object is iterable
}
மாற்றக்கூடிய பொருளின் மேல் எவ்வாறு லூப் செய்வது
நீங்கள் பயன்படுத்த முடியும் foreach
லூப் to loop to loop on iterable object. உதாரணத்திற்கு:
$iterable = new MyIterableClass();
foreach ($iterable as $value) {
// do something with $value
}
உங்கள் சொந்த இட்ரெபிள் வகுப்பை உருவாக்குதல்
நீங்கள் வேண்டும் செயல்படுத்த IteratorAggregate இடைமுகம் மற்றும் குறிப்பிடவும் getIterator உங்கள் சொந்த மீண்டும் செய்யக்கூடிய வகுப்பை உருவாக்குவதற்கான செயல்பாடு. எடுத்துக்காட்டாக:
class MyIterableClass implements IteratorAggregate {
private $data = array();
public function __construct($data) {
$this->data = $data;
}
public function getIterator() {
return new ArrayIterator($this->data);
}
}
கேள்வி பதில்
கே: PHP இல் உள்ள பல்வேறு வகையான திரும்பச் சொல்லக்கூடியவை என்ன?
ப: அணிகள், பொருட்களை இது இட்டரேட்டர் இடைமுகத்தை செயல்படுத்துகிறது, மற்றும் டிராவர்சபிள் இடைமுகத்தை செயல்படுத்தும் பொருள்கள் அனைத்தும் PHP இல் மீண்டும் செய்யக்கூடியவைகளுக்கு எடுத்துக்காட்டுகள்.
கே: இடையே உள்ள வேறுபாட்டை விளக்க முடியுமா? Iterator
மற்றும் Traversable
இடைமுகங்கள்?
ப: இட்ரேட்டர் இடைமுகம் ரீவைண்ட், கரண்ட், கீ, அடுத்தது மற்றும் செல்லுபடியாகும் போன்ற ஒரு பொருளின் மூலம் மீண்டும் மீண்டும் செய்யும் முறைகளின் தொகுப்பை வழங்குகிறது. மறுபுறம், டிராவர்ஸபிள் இடைமுகம், ஒரு வகுப்பு கடந்து செல்லக்கூடியது மற்றும் எந்த குறிப்பிட்ட முறைகளையும் செயல்படுத்த தேவையில்லை என்று கூறுகிறது. இடிரேட்டர்-செயல்படுத்தப்பட்ட வகுப்புகளும் டிராவர்சபிள் இடைமுகத்தை செயல்படுத்த வேண்டும்.
கே: என்ன பயன் IteratorAggregate
இடைமுகம்?
A: IteratorAggregate இடைமுகமானது, உருப்படியின் உள்ளடக்கங்களை கடந்து செல்லக்கூடிய ஒரு வெளிப்புற மறு செய்கை பொருளை நிறுவுவதன் மூலம் ஒரு பொருளின் மீது மீண்டும் செயல்பட உங்களை அனுமதிக்கிறது. இது Iterator இடைமுகத்தை செயல்படுத்த வேண்டிய அவசியமின்றி பொருளை அதன் சொந்த பயண முறையை உருவாக்க உதவுகிறது. இந்த இடைமுகத்தைச் செயல்படுத்தும் வகுப்புகள் getIterator எனப்படும் ஒற்றை முறையைக் குறிப்பிட வேண்டும், இது Iterator இடைமுகப் பொருளின் நிகழ்வை வழங்குகிறது.
கே: என்ன வித்தியாசம் foreach
மற்றும் for
இட்டேட்டர்களைப் பயன்படுத்தும் போது லூப்?
ப: தி foreach
லூப் குறிப்பாக இட்டேட்டர்களுடன் வேலை செய்ய வடிவமைக்கப்பட்டுள்ளது, அது தானாகவே அழைக்கிறது rewind
லூப்பின் தொடக்கத்தில் உள்ள முறை மற்றும் valid
மீண்டும் மீண்டும் கூறும் கூறுகள் உள்ளனவா என்பதைச் சரிபார்க்கும் முறை.
The for
லூப்பை இட்ரேட்டர்களிலும் பயன்படுத்தலாம், ஆனால் புரோகிராமர் கைமுறையாக அழைக்க வேண்டும் rewind
, valid
, current
, key
, மற்றும் next
வளையத்தில் பொருத்தமான புள்ளிகளில் முறைகள்.
கே: மூடுதலுடன் இட்டரேட்டரை எவ்வாறு பயன்படுத்துவது?
A: PHP இல் க்ளோஷர்களை மறு செய்கைகளாகப் பயன்படுத்தலாம். இதைச் செய்ய, IteratorIterator வகுப்பின் நிகழ்வை உருவாக்கி, அதை ஒரு வாதமாக உங்கள் மூடுதலை ஊட்டவும். மூடல் எந்த அளவுருக்களையும் எடுக்கக்கூடாது மற்றும் தற்போதைய விசை மற்றும் மதிப்பைக் கொண்ட வரிசையை வழங்க வேண்டும். மூடுதலுக்குள் வெளிப்புற மாறிகள் கிடைக்கச் செய்ய, மூடுதலில் ஒரு பயன்பாட்டு அறிக்கையும் இருக்க வேண்டும்.
$myArray = [1, 2, 3, 4];
$iter = new IteratorIterator(new ArrayIterator($myArray));
foreach ($iter as $key => $val) {
echo $val . PHP_EOL;
}
இங்கே, IteratorIterator
வர்க்கம் மீண்டும் மீண்டும் செய்ய பயன்படுத்தப்படுகிறது ArrayIterator
வகுப்பு பின்னர் மூடல் செயல்பாடு கடந்து.
உடற்பயிற்சிகள்:
- PHP இல் திரும்பச் சொல்லக்கூடியவை என்ன?
- PHP இல் ஒரு for loop ஐப் பயன்படுத்தி ஒரு வரிசையின் மீது எவ்வாறு திரும்பத் திரும்பச் செய்வது?
- PHP இல் ஃபோர்ச் லூப்பைப் பயன்படுத்தி ஒரு வரிசையை எவ்வாறு மீண்டும் செய்கிறீர்கள்?
- PHP இல் ஃபோர்ச் லூப்பைப் பயன்படுத்தி ஒரு பொருளின் மீது நீங்கள் எவ்வாறு திரும்பத் திரும்பச் செய்கிறீர்கள்?
- PHP இல் தனிப்பயன் வகுப்பிற்கான இட்டேட்டரை எவ்வாறு உருவாக்குவது?
- நீங்கள் எப்படி பயன்படுத்துகிறீர்கள்
yield
PHP இல் ஜெனரேட்டர் செயல்பாட்டை உருவாக்குவதற்கான முக்கிய சொல்?
பதில்:
- மறுபரிசீலனை செய்யக்கூடியது என்பது ஒரு வரிசை அல்லது ஒரு பொருள் போன்றவற்றை மீண்டும் மீண்டும் செய்யக்கூடிய (சுழற்சி) ஒரு பொருள்.
for ($i = 0; $i < count($array); $i++) { // code to be executed; }
foreach ($array as $value) { // code to be executed; }
foreach ($object as $property => $value) { // code to be executed; }
- தனிப்பயன் வகுப்பிற்கு ஒரு இட்டேட்டரை உருவாக்க, வகுப்பை செயல்படுத்த வேண்டும்
Iterator
இடைமுகம் மற்றும் வரையறுக்கrewind
,valid
,current
,key
, மற்றும்next
முறைகள். function generator() { yield $value1; yield $value2; }