Աբստրակտ մեթոդներ trait-ներում OOP-ում PHP-ում

Trait-ներում հնարավոր է որոշ մեթոդներ հայտարարել աբստրակտ: Այս դեպքում այդ trait-ն օգտագործող կլասը պարտավոր կլինի իրականացնել այդպիսի մեթոդ: Միաժամանակ trait-ի աբստրակտ մեթոդները չեն կարող լինել private:

Դիտարկենք օրինակով: Ենթադրենք ունենք հետևյալ trait-ը:

TestTrait.php<?php
  trait TestTrait
  {
    public function method1()
    {
      return 1;
    }
    
    abstract public function method2();
  }
?>

Ենթադրենք մեր trait-ն օգտագործվում է Test կլասի կողմից: Trait-ում աբստրակտ մեթոդի առկայությունը կպարտադրի ծրագրավորողին իրականացնել այն կլասում, հակառակ դեպքում կառաջանա PHP-ի սխալ:

Ստեղծենք Test կլասը՝ միասին method2 մեթոդի հետ:

Test.php<?php
  class Test
  {
    use TestTrait; // օգտագործում ենք trait-ը
    
    // Իրականացնում ենք աբստրակտ մեթոդը:
    public function method2()
    {
      return 2;
    }
  }
  
  new Test;
?>
Задание 1

Պատճենեք իմ TestTrait trait-ի կոդը և իմ Test կլասի կոդը: Ջնջեք կլասից method2 մեթոդը: Համոզվեք նրան, որ դրա իրականացման բացակայությունը կհանգեցնի PHP-ի սխալի: