⊗ppOpTrMP 82 of 107 menu

მეთოდების პრიორიტეტი ტრეიტებთან მუშაობისას PHP-ის OOP-ში

თუ კლასსა და ტრეიტში არის ერთიდაიგივე სახელის მეთოდი, მაშინ კლასის მეთოდი გადაფარავს ტრეიტის მეთოდს:

<?php trait TestTrait { // მეთოდი სახელად method: public function method() { return 'trait'; } } class TestClass { use TestTrait; // იგივე მეთოდი სახელად method: public function method() { return 'test'; } } $test = new TestClass; echo $test->method(); // გამოიტანს 'test' - იმუშავა კლასის მეთოდმა ?>

თუ კი თავად კლასს არ გააჩნია ასეთი მეთოდი, მაგრამ არსებობს ტრეიტის მეთოდების და მშობელი კლასის მეთოდების სახელების კონფლიქტი, მაშინ ტრეიტის მეთოდებს გააჩნიათ პრიორიტეტი:

<?php trait TestTrait { // მეთოდი სახელად method: public function method() { return 'trait'; } } // მშობელი კლასი: class ParentClass { // მეთოდი სახელად method: public function method() { return 'parent'; } } // კლასი მემკვიდრეობით იღებს method მეთოდს მშობელი კლასიდან: class TestClass extends ParentClass { use TestTrait; } $test = new TestClass; echo $test->method(); // გამოიტანს 'trait', რადგან ტრეიტს გააჩნია პრიორიტეტი ?>
azbydeenesfrkakkptruuz