Belajar PHP OOP Part 1.21 : Trait conflict

trait conflict

  • Jika kita menggunakan lebih dari satu trait, lalu terdapat function yang sama di trait tersebut
  • Maka hal tersebut akan menyebabkan konflik dan terjadi error
  • Jika terjadi konflik seperti ini, kita bisa mengatasinya dengan menggunakan kata kunci insteadof
Error

<?php

trait A {
function doA(): void
{
echo "a" . PHP_EOL;
}

function doB(): void
{
echo "b" . PHP_EOL;
}
}

trait B {
function doA(): void
{
echo "A" . PHP_EOL;
}

function doB(): void
{
echo "B" . PHP_EOL;
}
}

class Sample
{
use A, B;
}

$sample = new Sample();
$sample->doA();
$sample->doB();

trait conflict dan error

Solusi

<?php

trait A {
function doA(): void
{
echo "a" . PHP_EOL;
}

function doB(): void
{
echo "b" . PHP_EOL;
}
}

trait B {
function doA(): void
{
echo "A" . PHP_EOL;
}

function doB(): void
{
echo "B" . PHP_EOL;
}
}

class Sample
{
use A, B{
A::doA insteadof B;
B::doB insteadof A;
}
}

$sample = new Sample();
$sample->doA();
$sample->doB();
hasil trait conflict

Next Post Previous Post
No Comment
Add Comment
comment url