Sobes.tech
Middle+

Working with traits. Is it possible to access a private trait method from a class that uses this trait?

sobes.tech AI

Answer from AI

In PHP, private methods of a trait are not accessible directly from the class that uses this trait. Private methods of a trait are only visible within the trait itself.

If a private trait method is called in a class, it will cause an error because the scope of the private method is limited to the trait.

Example:

trait ExampleTrait {
    private function privateMethod() {
        return "Hello from private method";
    }

    public function callPrivate() {
        return $this->privateMethod(); // Works inside the trait
    }
}

class MyClass {
    use ExampleTrait;

    public function test() {
        // return $this->privateMethod(); // Error: method privateMethod is not accessible
        return $this->callPrivate(); // Works, calls the private method via public method
    }
}

$obj = new MyClass();
echo $obj->test(); // Outputs: Hello from private method

Thus, private methods of a trait can be used inside the trait but not called directly from the class using this trait.