Junior
PHP-ში ინტერფეისები რა არის?
sobes.tech AI
პასუხი AI-სგან
PHP-да انٽرفيس هڪ معاهدو آهي، جيڪو طريقن جو هڪ سيٽ بيان ڪري ٿو (انهن جي سگنيچرز سان)، جيڪي هڪ ڪلاس کي لاڳو ڪرڻا آهن. اهو طئي ڪري ٿو "ڇا" ڪلاس ڪري ٿو، پر "ڪيئن" نٿو.
- معاهدو: هڪ ڪلاس، جيڪو انٽرفيس کي لاڳو ڪري ٿو، اهو وعدو ڪري ٿو ته اهو ان ۾ بيان ڪيل سڀني طريقن کي فراهم ڪندو، ساڳن نالن، پيراميٽرن ۽ واپسي قسمن سان.
- قسمون وراثت: انٽرفيسون قسمون بيان ڪرڻ جي اجازت ڏين ٿيون، بنيادي طور تي، رويي جي بنياد تي، نه صرف ڪلاس جي وراثت تي. اهو پوليمورفزم لاءِ مفيد آهي. توهان مختلف ڪلاس جي objects سان ڪم ڪري سگهو ٿا، جيڪي هڪ انٽرفيس کي لاڳو ڪن ٿا، ڄڻ ته اهي هڪ قسم جا هجن.
- ڪثير وراثت رويي جي: PHP ڪلاس جي ڪثير وراثت جي حمايت نٿو ڪري، پر هڪ ڪلاس ڪيترن ئي انٽرفيسن کي لاڳو ڪري سگهي ٿو. اهو ڪلاس کي ڪيترن ئي معاهدن مان رويي حاصل ڪرڻ جي اجازت ڏئي ٿو.
- ذميواريون الڳ ڪرڻ: انٽرفيسون رويي جي تعريف کي ان جي عملدرآمد کان الڳ ڪرڻ ۾ مدد ڪن ٿيون.
<?php
// انٽرفيس جي تعريف
interface Logger
{
/**
* لاگ ۾ پيغام لکڻ.
* @param string $message لکڻ لاءِ پيغام.
*/
public function log(string $message): void;
}
// انٽرفيس کي لاڳو ڪندڙ ڪلاس
class FileLogger implements Logger
{
private string $filePath;
public function __construct(string $filePath)
{
$this->filePath = $filePath;
}
public function log(string $message): void
{
file_put_contents($this->filePath, $message . PHP_EOL, FILE_APPEND);
}
}
// ٻيو ڪلاس، جيڪو ساڳيو انٽرفيس لاڳو ڪري ٿو
class DatabaseLogger implements Logger
{
private $dbConnection; // امڪاني ڊيٽابيس ڪنيڪشن جو آبجیکٹ
public function __construct($dbConnection)
{
$this->dbConnection = $dbConnection;
}
public function log(string $message): void
{
// ڊيٽابيس ۾ محفوظ ڪرڻ جي منطق
// ...
echo "Logging to database: " . $message . PHP_EOL;
}
}
// انٽرفيس جي استعمال مختلف عملدرآمد سان
function processData(Logger $logger, string $data): void
{
// ڊيٽا جي پروسيسنگ
// ...
$logger->log("Processed data: " . $data);
}
$fileLogger = new FileLogger('/var/log/app.log');
$dbLogger = new DatabaseLogger(null); // مثال طور ڊيٽابيس سان ڳنڍڻ
processData($fileLogger, 'مثال ڊيٽا 1');
processData($dbLogger, 'مثال ڊيٽا 2');
مکيه فرقن جو مقابلو ڪريو:
| خاصيت | انٽرفيس | اڀرندڙ ڪلاس |
|---|---|---|
| ميمبرن جو قسم | صرف طريقا (طريقا پبلڪ هجڻ گهرجن) | طريقا (پبلڪ، محفوظ)، خاصيتون |
| طريقن جي عملدرآمد | عملدرآمد کان سواء (صرف سگنيچرز) | عملدرآمد ٿيل طريقا ٿي سگهن ٿا |
| وراثت | ڪلاس ڪيترائي انٽرفيس لاڳو ڪري سگهي ٿو | ڪلاس صرف هڪ اڀرندڙ ڪلاس ورثو ڪري سگهي ٿو |
| تعمير ڪندڙ | ناهي | ٿي سگهي ٿو تعمير ڪندڙ |
| ميمبرن جي ڏسڻ جي حد | صرف public |
public, protected |