Доступ к родительскому магическому методу из черты

Я пытаюсь переопределить поведение магического метода __set в черту. Проблема появляется, когда я также хочу получить доступ от черты к родительскому классу обычай __set функция.

trait TestingTrait {public function __set($key, $value)
{
// Some stuff...

parent::__set($key, $value);
// self::__set($key, $value);
}

}

class TestingClass {

use TestingTrait;

}

$var = new TestingClass();
$var->value = 'some value';

Все работает отлично, пока мне не нужно использовать основной класс __set метод, как он делает некоторые другие вещи с наборами переменных.

Я пробовал с self но это входит в бесконечный цикл. Есть ли способ получить доступ к основному классу?

1

Решение

Вы должны использовать $this-> как это:

<?php

trait TestingTrait {public function __set($key, $value)
{
// Some stuff...
$this->$key = 'proof that it is going through here: ' . $value;
}

}

class TestingClass {

use TestingTrait;

}

$var = new TestingClass();
$var->value = 'some value';

echo $var->value;

Выход:

proof that it is going through here: some value
2

Другие решения

Я не знал, что черты поведения таковы, как если бы это была часть кода, буквально скопированная / вставленная в класс.

PHP: черты (пример 2)

Невозможно получить доступ к главному классу через родительский класс, поскольку у него фактически нет родительского класса, выходящего из.

0

По вопросам рекламы [email protected]